网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2014-12-21 10:07:07

admin
管理员

linux sort 的多行排序

比如一段文本格式不是一行一行而是这个样子(这段文字空行前是没有空格的!!!)

1->id编号值
姓名->张三
网站->www.ipbbs.net

3->id编号值
姓名->李四
网站->www.ipbbs.net

2->id编号值
姓名->王五
网站->www.ipbbs.net

如果对这样的文字排序, 就不能直接用 sort 而是应该先用awk进行处理 

# cat a.txt | awk -v RS="" '{gsub("\n", "#");print}'
1->id编号值#姓名->张三#网站->www.ipbbs.net
3->id编号值#姓名->李四#网站->www.ipbbs.net
2->id编号值#姓名->王五#网站->www.ipbbs.net

这是第一次的处理,处理的结果是这样。 处理成可以用cut处理的形式


完整的命令

 cat a.txt 
 | awk -v RS="" '{gsub("\n", "#");print}' 
 | sort -k 1 
 | awk -v ORS="\n\n" '{gsub("#", "\n"); print }'    
 
 1->id编号值
姓名->张三
网站->www.ipbbs.net

2->id编号值
姓名->王五
网站->www.ipbbs.net

3->id编号值
姓名->李四
网站->www.ipbbs.net


awk 参数说明

-v : 设置变量

RS: 这个变量再 awk 表示 记录的分割符号

ORS:这个变量表示输出当前记录的分隔符

gsub : 替换



ipbbs.net

离线

页脚

Powered by FluxBB