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

Nic*_*nto 6 regex windows sed

我想用sed的单个选项卡替换所有多个选项卡.我正在尝试使用

sed 's:\t+:\t:' .\text.CSV > newtext.csv
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用

如果我在崇高中打开并用正则表达式替换它\t+,\t它可以正常工作

我的sed出了什么问题?

另外,如果我用逗号替换制表符

sed 's:\t\t*:,:g' text.CSV > newtext.csv
Run Code Online (Sandbox Code Playgroud)

我得到这种线

264262360,20030826,200308,2003,2003.6466,BUS,EMPLOYER,,,,,,BUS,,, ,,,,,,,,,,0,051,051,05,1,3.4,12,2,12,5.24866163479182,1
Run Code Online (Sandbox Code Playgroud)

dev*_*ull 15

您还可以使用tr一个标签替换多个标签:

tr -s '\t' '\t' < inputfile > outfile
Run Code Online (Sandbox Code Playgroud)

-s选项会重复:

-s, - 挤压重复

      replace each input sequence of a repeated character that is
      listed in SET1 with a single occurrence of that character
Run Code Online (Sandbox Code Playgroud)

  • 注意`tr -s'\ t''足以挤压,第二个''\ t''没有必要. (2认同)

fal*_*tru 7

使用-r选项和g标志:

sed -r 's:\t+:\t:g' text.CSV > newtext.csv
Run Code Online (Sandbox Code Playgroud)

-r+工作.

g 用于替换所有出现的标志.

UPDATE

如果您sed不支持-r选项,请尝试关注:

sed 's:\t\t*:\t:g' text.CSV > newtext.csv
Run Code Online (Sandbox Code Playgroud)