我有一个按字母顺序排序的文件。这很简单:cat {some file} | sort > {newfile}
但是,我需要按字母顺序排序,按文件中的第三列,每个字母将进入其自己的文件。
所以:a.txt、b.txt、c.txt等等......
有什么可能的方法来编写这个脚本吗?
答案1
sort file | awk '{print > substr($0, 3, 1) ".txt"}'
将把每一行打印到一个文件中,该文件的名称是该行的第三个字符,后跟.txt
.
答案2
扩展@StephaneChazelas 帖子
sort -k1.3 | awk '{print > substr($0, 3, 1) ".txt"}'
实际上将从右边的第三个字符开始对行进行排序。换句话说,在执行sort
before操作时,它将忽略每行的前两个字符awk
。