shell实现文本多行变一行的几种方法

发布时间:2019-08-15编辑:脚本学堂
shell实现文本多行变一行的几种方法

有以下的文本内容:
$cat test.txt
001
002
003
004
005
006
0000999
需要格式化成:
001 002 003 004 005 006 0000999

下面介绍几种实现方法,供大家参考。

方法一、最好的答案是waker老大提供的,就不解释了:
 

复制代码 代码如下:
xargs < test.txt

方法二、整个文件读入一个变量,然后直接打印,也很容易理解,dolphinlater提供:
 

复制代码 代码如下:
a=`cat test.txt`;echo $a

方法三、使用tr把换行符替换成空格:
 

复制代码 代码如下:
tr -s "n" " " < test.txt;echo

方法四、使用sed,把整个文件读入保持空间,处理最后一行的时候,替换所有换行符为空格,打印:
 

复制代码 代码如下:
sed -n '1h;1!H;${g;s/n/ /g;p;}' test.txt

方法五、使用linuxjishu/13830.html target=_blank class=infotextkey>awk,读入一行打印一行,但是不打印换行符,最后一行多打印一个换行符:
 

复制代码 代码如下:
awk '{printf("%s ",$0);}END{print}' test.txt

方法六、使用paste命令格式化打印,-d指定分隔符,-s表示合并成一行:
 

复制代码 代码如下:
paste -d" " -s - < test.txt

方法七、使用pr格式化打印,-s指定分隔符,-50指定每行打印多少域,-t指定取消页眉、页尾:
 

复制代码 代码如下:
pr -50t -s" " test.txt