Unix 从一行中删除n个空格

Unix 从一行中删除n个空格,unix,sed,awk,grep,tr,Unix,Sed,Awk,Grep,Tr,我试图删除两个单词之间的n个空格,我想知道这是否可能。我在网上搜索了一下,但是没有找到任何关于这个的东西。我只知道如何删除制表符和空行。在我提出问题后,3个空间得到一个变量,请把它看作是输入的三。 “aaaa”和“bbb”之间有3个空格字符,我只想删除两个空格。 $ cat Input.txt aaaa bbb ccc ddd eeee ff ggg hhh 期望输出: aaaa bbb ccc ddd eee ff ggg hhh tr具有压缩重复字符的-s选项: $ tr -

我试图删除两个单词之间的n个空格,我想知道这是否可能。我在网上搜索了一下,但是没有找到任何关于这个的东西。我只知道如何删除制表符和空行。在我提出问题后,3个空间得到一个变量,请把它看作是输入的三。 “aaaa”和“bbb”之间有3个空格字符,我只想删除两个空格。

$ cat Input.txt
aaaa   bbb   ccc ddd
eeee ff   ggg hhh
期望输出:

aaaa bbb ccc ddd
eee ff ggg hhh

tr
具有压缩重复字符的
-s
选项:

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

尝试以下几行,可能会有所帮助:

tr -s ' ' 

的解决方案是最好的方法,但以下是如何使用
sed

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

awk'$1=$1'
这很危险,如果第一个字段是
0
0.0
,它将失败。最好使用
awk'{$1=$1}1'
sed 's/ \+/ /g' file
awk '$1=$1' file
% sed 's/  */ /g' file
aaaa bbb ccc ddd
eeee ff ggg hhh