我有一个由分号分隔的文本文件,可能有多个行,带有标题。我必须为文本文件中的每个列添加双引号。我试图使用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语句并运行但不是全部3.
答案 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