Linux 文本块排序
来源:互联网 发布:java equals的用法 编辑:程序博客网 时间:2024/05/16 23:35
解题思路于自与作者:Arnold Robbins & Neson H.F.Beebe
有时,我们需要多行记录进行排序,地址清单就是很好的例子。由于sort没有提供这个一方法,所以需要变通一下。
举例说明:
假如有这样的一个地址清单
# SORTKEY:Schlo,Hans JurgenHans Jurgen ScholUnter den Linden 78D-10117 BerlinGermany# SORTKEY:Jones, AdrianAdrian Jones371 Montgomery Park RoadHenley-in-Thames RG9 4AJUK# SORTKEY:Brown, KimKim Brown1841 S Main StreetWestchester, NY 10502USA# SORTKEY:Kate, LoriesLories kate235 FuZhou Park RoadFuJian provinceCHINA针对这样的地址清单,基于国籍排序后同样以文本块输出,命令如下:
cat my-friends | awk -v RS="" '{gsub("\n", "+"); print}' | sort -f -t + -k5,5 | awk -v ORS="\n\n" '{ gsub("+", "\n"); print}'
其中第一个gsub指的是用+替换输入文本内容中的换行符号,而第二个gsub指的是将上一个gsub做的变化替换回来,需注意的是gsub("\n", "+")的第二个参数替换符必须是系统无法打印的或者是无意义的字符。
RS=""是一个特殊用法,指的是记录以空行的方式隔开,而ORS="\n\n"则是输出记录分割器,这里以换行符号作为输出分割符。
输出结果如下:
# SORTKEY:Kate, LoriesLories kate235 FuZhou Park RoadFuJian provinceCHINA# SORTKEY:Schlo,Hans JurgenHans Jurgen ScholUnter den Linden 78D-10117 BerlinGermany# SORTKEY:Jones, AdrianAdrian Jones371 Montgomery Park RoadHenley-in-Thames RG9 4AJUK# SORTKEY:Brown, KimKim Brown1841 S Main StreetWestchester, NY 10502USA
0 0
- Linux 文本块排序
- shell学习十九天----文本块排序
- linux命令---文本排序 sort
- linux 文本排序bash特性
- linux 文本排序、合并和分割 -转
- linux shell 文本排序与统计
- 文本块操作命令
- vi标记文本块
- 文本块的操作
- VIM选择文本块
- VIM选择文本块
- 文本块(TextBlock)
- 文本,块的位置
- 文本块收缩展开效果
- 使用HtmlParser提取HTML文本块
- VIM选择文本块/复制/粘贴
- vim 文本块和多文件操作
- VIM选择文本块/复制/粘贴
- 常用sql整理
- 调用OpenSSL实现数字签名功能例程(一)
- Cloudstack的基本概念(2.存储)
- android打印调用栈的方法
- HBase工具ImportTsv导入数据
- Linux 文本块排序
- 设计模式-行为型模式总结实例(三)
- 使用jqMobi开发app基础:panel属性data-defer介绍
- Java开发牛人十大必备网站
- maven构建时的问题汇总
- 开发者模式正式开启
- HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析
- 调用OpenSSL实现数字签名功能例程(二)
- 解决在IE浏览器中点击登录出现打开或保存json文件的提示