文本:
mmy the Weasel
100 Pleasant Drive
San Francisco, CA 12345
Big Tony
200 Incognito Ave.
Suburbia, WA 67890
Cousin Vinnie
Vinnie's Auto Shop
300 City Alley
Sosueme, OR 76543
要求把该地址横向打印:
mmy the Weasel 100 Pleasant Drive San Francisco, CA 12345
Big Tony 200 Incognito Ave. Suburbia, WA 67890
Cousin Vinnie Vinnie's Auto Shop 300 City Alley Sosueme, OR 76543
- awk 'BEGIN{FS="\n";RS="";OFS="\t"}NF+=0' file
[解析]
先看文本的排列循序,3段地址之间把空行作为记录分割符,那么RS="",文本之间的字段分割符是换行,那么FS="\n",为了排列对齐,把输出分割符为制表符,那么OFS="\t",要使OFS生效,必须对字段进行操作,那么这里设置了一个NF+=O,或者NF=NF,$1=$1都是可以的。
- sed -n ':a;/\n$/!{$bb;N;ba};:b;s/\n/\t/g;p' file
[解析]
把文本都读入pattern space,当匹配到空行的时候,进行替换然后打印。
阅读(3015) | 评论(2) | 转发(0) |