在文本文件中添加双引号

时间:2017-10-06 18:52:38

标签: unix sed double quotes

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

我的命令:

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

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

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

  4. 当我将它们组合如下时:

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

    这不会运行。我只能组合上面的两个sed语句并运行但不是全部3.

2 个答案:

答案 0 :(得分:0)

你可以这样试试。

sed '2,$s/\([^;]*\)/\"\1"/g'

从第2行开始保留标题。

答案 1 :(得分:0)

将脚本(和变量)括在单引号中,除非您出于特定目的绝对需要双引号,例如让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

可以在某些seds(支持ERE的那些)中减少一点:

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