Bash 排序并跳过标题。

4 sorting bash

我有一个脚本来对 for 循环中的某些列进行排序。我想在排序过程中跳过标题,但我失败了。这就是我所拥有的:

for i in file* 
do
  sort -k 1,1 -k 3,3n -t\; ${i} > h${i}
  rm ${i}
done
Run Code Online (Sandbox Code Playgroud)

如何在排序过程中跳过标题但将其保留在输出中?

谢谢。

sk8*_*123 6

cat YOURFILE| (read -r; printf "%s\n" "$REPLY"; sort)
Run Code Online (Sandbox Code Playgroud)

  • 这几乎是完美的,但您需要使用“IFS= read”而不是“read”来保留前导和尾随空格。 (2认同)

rus*_*ush 3

header 是文件的第一行吗?如果是,请尝试下一个:

for i in file* 
do
  head -1 ${i} > h${i}
  sed 1d ${i} | sort -k 1,1 -k 3,3n -t\; >> h${i}
  rm ${i}
done
Run Code Online (Sandbox Code Playgroud)