linux多行变一行,shell中多行变一行的方法

SeD 分析 :

h为copy H为append

sed -n '1h;1!H;${g;s/\n/ /g;p;}'

1h 为将第一行copy 到 Hold space,1!H 为将非第一行的append到hold space, ${...} 为如果是最后一行这进行替换

2009-08-06 10:37

文本内容:

$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

方法五、使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值