Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7590099
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: LINUX

2012-01-11 11:03:47

 
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

转载自:http://blog.sina.com.cn/s/blog_4a3c301c0100lqbm.html
阅读(4684) | 评论(0) | 转发(5) |
给主人留下些什么吧!~~