向文本文件添加双引号

Add double quotes to text file

提问人:Pallavi 提问时间:10/7/2017 最后编辑:James ZPallavi 更新时间:10/7/2017 访问量:913

问:

我有一个用分号分隔的文本文件,可能有多行,可能有一个标题。我必须为文本文件中的每一列添加双引号。我尝试使用 sed 让各个部分工作。 但是,当它们组合在一起时,它们不会运行。

我的命令:

  1. sed "s/;/\";"\/g a.txt- (将列替换为“;”(例如:d;”b";"c";"f)

  2. sed "s/^/\"/"g a.txt- (– 替换第一列两边的双引号)

  3. sed "s/$/\"/"g a.txt- (替换最后一列的双引号)

当我将它们组合如下时:

sed "s/;/\";"\/g";s/^/\"/g";s/$/\"/ g"  a.txt

这不会运行。我只能组合上述 sed 语句中的 2 个并运行,但不能全部 3 个。

UNIX SED 引号

评论


答:

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