首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用超过的引号替换sed

用超过的引号替换sed
EN

Stack Overflow用户
提问于 2018-10-16 09:00:02
回答 4查看 55关注 0票数 1

Converting Height Measurements from Imperial to Metric units相关,但使用了不同的方法。

我有一个数据集,其中有一些混合单位的值,特别是用帝国单位和公制单位来测量高度。此外,无论出于什么原因,帝国测量都包含了过多的引号。

我曾想过,当人们的身高相对受限时,一个大规模的寻找替代物可能会起作用,而不是进行转换。例如,一个人的5‘3英寸是160.02cm,所以它可以找到所有的一个,并替换为另一个。

考虑一下数据集test.csv中的这一行

代码语言:javascript
复制
"Female","Hispanic",25,"5' 11"""

我想把"5‘11“改为"180.34”。

我尝试过sed -i 's#"5' 1"""#"180.34"#g' test.csv,但唯一的输出是终端窗口中的>字符,这表明我做错了什么,但不太清楚是什么。有什么东西我错过了处理多余的引号吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-16 09:13:14

最简单的方法是对sed字符串进行转义,在本例中:

代码语言:javascript
复制
sed -i "s|\"5' 1\"\"\"|\"180.34\"|g" test.csv
票数 1
EN

Stack Overflow用户

发布于 2018-10-16 09:15:31

问题是sed表达式5' 1中的单引号。

使用\x27替换单引号:

代码语言:javascript
复制
sed -i 's#"5\x27 1"""#"180.34"#g' test.csv
票数 2
EN

Stack Overflow用户

发布于 2018-10-16 13:57:03

wrt Additionally, for whatever reason, said Imperial measurements contain an excess of quotation marks. --当您以英尺和英寸编写度量值时,'表示英尺,"表示英寸。因此,5英尺11英寸是写5' 11"。在引用了像"foo"这样的字段的CSV中,您需要某种方式来包含",而在某些CSV格式(例如从"导出)中,一种方法是加倍"来转义它。因此,在引用的字段中包括foo"bar将是"foo""bar"。现在让我们回到5' 11" --同样的逻辑适用,并将其包含在引用的字段中,将其写为"5' 11""",其中最后一个"之前的""是包含在引用字段中的"的转义表示。有关使用标准UNIX工具awk解析CSV的更多信息,请参见What's the most robust way to efficiently parse CSV using awk?中对适用的CSV“标准”的引用。

wrt您的具体问题-而不是一次转换一个数字使用硬编码的值,只是在一次转换他们所有的算法。将GNU awk用于FPAT:

代码语言:javascript
复制
$ cat tst.awk
BEGIN {
    FPAT = "([^,]*)|(\"[^\"]+\")"
    OFS  = ","
}
{
   split($4,feetinches,/[^0-9]+/)
   ft = feetinches[2] + (feetinches[3] / 12)
   $4 = "\"" int( (10000 * ft / 3.28084) + 0.5 ) / 100 "\""
   print
}

$ cat file
"Female","Hispanic",25,"5' 11"""
"Male","Scottish",54,"6' 1"""
"Female","English",12,"4' 7"""
"TBD","Martian",935,"8' 5"""

$ awk -f tst.awk file
"Female","Hispanic",25,"180.34"
"Male","Scottish",54,"185.42"
"Female","English",12,"139.70"
"TBD","Martian",935,"256.54"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52831703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档