我想用sed的单个标签替换所有多个标签。 我正在尝试使用
sed 's:\t+:\t:' .\text.CSV > newtext.csv
但这似乎不起作用
如果我以崇高的方式打开并使用正则表达式替换所有\t+
到\t
它正常运行
我的sed出了什么问题?
另外,如果我用逗号
替换制表符sed 's:\t\t*:,:g' text.CSV > newtext.csv
我得到这种线
264262360,20030826,200308,2003,2003.6466,BUS,EMPLOYER,,,,,,BUS,,, ,,,,,,,,,,0,051,051,05,1,3.4,12,2,12,5.24866163479182,1
答案 0 :(得分:14)
您还可以使用tr
将一个标签替换为一个标签:
tr -s '\t' '\t' < inputfile > outfile
-s
选项会重复重复:
-s , - 挤压重复
replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
答案 1 :(得分:7)
使用-r
选项和g
标记:
sed -r 's:\t+:\t:g' text.CSV > newtext.csv
-r
让+
发挥作用。
g
标记以替换所有出现的内容。
<强>更新强>
如果您的sed
不支持-r
选项,请尝试关注:
sed 's:\t\t*:\t:g' text.CSV > newtext.csv
答案 2 :(得分:0)
您也可以使用
sed "s/\t\+/\t\g" test.csv >> newtest.csv