我有一个脚本来对 for 循环中的某些列进行排序。我想在排序过程中跳过标题,但我失败了。这就是我所拥有的:
for i in file*
do
sort -k 1,1 -k 3,3n -t\; ${i} > h${i}
rm ${i}
done
如何在排序过程中跳过标题但将其保留在输出中?
谢谢。
cat YOURFILE| (read -r; printf "%s\n" "$REPLY"; sort)
标题是文件的第一行吗?如果是,请尝试下一个:
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
您可以在使用 sed 进行排序之前删除标题。未经测试的代码。
for i in file*
do
sed 1d ${i} | sort -k 1,1 -k 3,3n -t\; > h${i}
rm ${i}
done
这可能对您有用(GNU sed 和 Bash):
sed -i '1{h;d};:a;$!{N;ba};s/.*/cat <<\\EOF|sort -k1,1 -k3,3n -t\\;\n&\nEOF/e;H;g' file*
for i in file*
do
awk 'NR==1;NR>1{print|"sort -k 1,1 -k 3,3n -t\;"}' ${i} > $h{i}
rm ${i}
done