从一行中删除n个空格

时间:2013-09-26 09:51:42

标签: unix sed awk grep tr

我想删除两个单词之间的n个空格,我想知道是否可能。我在网上搜索但是找不到任何东西。我只找到了如何删除制表符和空白行。在我发布问题后,3个空格变为一个,请在input.txt中将其视为三个。

“aaaa”和“bbb”之间有 3个空格字符,我只想删除两个空格。

$ cat Input.txt
aaaa   bbb   ccc ddd
eeee ff   ggg hhh

期望的输出:

aaaa bbb ccc ddd
eee ff ggg hhh

3 个答案:

答案 0 :(得分:1)

tr-s选项来挤压重复的字符:

$ tr -s ' ' < file
aaaa bbb ccc ddd
eeee ff ggg hhh
  

-s, - squeeze-repeats

     

替换列出的重复字符的每个输入序列   SET1只出现一次该字符

另一个例子:

$ echo "aaa ----- bbbb ------------- ccc" | tr -s '-'
aaa - bbbb - ccc

答案 1 :(得分:1)

尝试这些行,可能有所帮助:

tr -s ' ' 

sed 's/ \+/ /g' file

awk '$1=$1' file

答案 2 :(得分:0)

Fedorqui 的解决方案是最好的方法,但这里是sed的方法:

% sed 's/  */ /g' file
aaaa bbb ccc ddd
eeee ff ggg hhh