8

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

3 回答 3

20

您还可以使用tr单个选项卡替换多个选项卡:

tr -s '\t' '\t' < inputfile > outfile

-s选项挤压重复:

-s , --squeeze-repeats

      replace each input sequence of a repeated character that is
      listed in SET1 with a single occurrence of that character
于 2013-08-26T06:45:54.733 回答
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
于 2013-08-26T06:28:56.007 回答
0

你也可以使用

sed "s/\t\+/\t\g" test.csv >> newtest.csv

于 2014-10-23T08:46:06.263 回答