Bash排序忽略前5行

时间:2016-07-07 22:46:21

标签: linux bash sorting unix

在排序剩下的文件时忽略文件的前5行我遇到了麻烦。我当前的命令按第二项对整个文件进行排序,但是我需要跳过前5个“标题”行。我需要阅读它并将其写入同一个文件。

当前命令

sort -f -t $ -k2n,2 -o /folder/File.txt /folder/File.txt

实施例

2016/07/07 15:41:02
@24921
@
@
@-1
b$1$4$...
a$2$5$...

2 个答案:

答案 0 :(得分:6)

这会对文件的第6行和第5行进行排序,同时保持前5行不变:

{ head -n5 file.txt; tail -n+6 file.txt | sort -ft$ -k2n,2; } >file.tmp && mv file.tmp file.txt

tcsh的

bashkshzsh不同,tcsh不支持使用{...}进行命令分组。而是尝试子shell:

( head -n5 file.txt; tail -n+6 file.txt | sort -ft$ -k2n,2 ) >file.tmp && mv file.tmp file.txt

答案 1 :(得分:1)

解决方案:

  1. 将前五行和其余行提取为两个单独的文件head.tmptail.tmp
  2. 排序tail.tmp并将head.tmp与排序结果连接起来。
  3. 在提示符处:

    $ sed -n -e '1,5w head.tmp' -e '6,$w tail.tmp' data.in
    $ sort tail.tmp | cat head.tmp - >data.new