【发布时间】:2016-08-08 23:21:05
【问题描述】:
有没有一种有效的方法来对文件进行排序,同时忽略出现在某些行开头的字符串?
例如,假设我有一个这样的文件列表:
FileAardvark
FileBee
N-FileBear
N-FileCat
FileZebra
我想在忽略“N-”的同时进行排序,所以排序结果是
FileAardvark
N-FileBear
FileBee
N-FileCat
FileZebra
我不需要直接编辑这些行,否则我可以完全从文件中删除“N-”。我最初的想法是使用“N-”作为sort 的分隔符,但这既失败了,因为“N-”是多个字符,而且我需要的列号因行而异。
在我的特殊情况下,碰巧所有的字符串都以相同的术语开头(即,在示例中,所有内容的开头都有“文件”),我需要对剩余的整个行进行排序,所以我最终使用了这个sed/sort 链,得到了我想要的结果:
sed -e 's/File/\x06/g' | sort -t$'\x06' -k2 | sed -e 's/\x06/File/g'
但是,我不能依赖在与排序相关的所有字符串的开头都有一个重复的序列,那么我怎样才能以更一般的方式完成此操作?
【问题讨论】: