提问人:Pallavi 提问时间:10/7/2017 最后编辑:James ZPallavi 更新时间:10/7/2017 访问量:913
向文本文件添加双引号
Add double quotes to text file
问:
我有一个用分号分隔的文本文件,可能有多行,可能有一个标题。我必须为文本文件中的每一列添加双引号。我尝试使用 sed 让各个部分工作。 但是,当它们组合在一起时,它们不会运行。
我的命令:
sed "s/;/\";"\/g a.txt
- (将列替换为“;”(例如:d;”b";"c";"f)sed "s/^/\"/"g a.txt
- (– 替换第一列两边的双引号)sed "s/$/\"/"g a.txt
- (替换最后一列的双引号)
当我将它们组合如下时:
sed "s/;/\";"\/g";s/^/\"/g";s/$/\"/ g" a.txt
这不会运行。我只能组合上述 sed 语句中的 2 个并运行,但不能全部 3 个。
答:
0赞
ctac_
10/7/2017
#1
你可以像那样尝试。
sed '2,$s/\([^;]*\)/\"\1"/g'
从第 2 行开始保留标头。
0赞
Ed Morton
10/7/2017
#2
将脚本(和变量)括在单引号中,除非您出于特定目的绝对需要双引号,例如让 shell 扩展变量。所以你的脚本应该是(清理了一些其他的东西):
sed 's/;/";"/g' a.txt - (replace columns with ";" (ex:d;"b";"c";"f)
sed 's/^/"/' a.txt - (– replace double quotes around first column)
sed 's/$/"/' a.txt - (replace double quotes around last column)
并结合:
sed 's/;/";"/g; s/^/"/; s/$/"/' a.txt
在某些 SED(支持 ERI)中,可以将其简化为:
sed 's/;/";"/g; s/^\|$/"/g' a.txt
评论