用sed中的单个选项卡替换选项卡

时间:2013-08-26 06:26:20

标签: regex windows sed

我想用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

3 个答案:

答案 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