我有一个脚本来对for循环中的某个列进行排序。我想在排序过程中跳过标题,但我失败了。这就是我所拥有的:
for i in file*
do
sort -k 1,1 -k 3,3n -t\; ${i} > h${i}
rm ${i}
done
如何在排序过程中跳过标题但是将其保存在输出中?
感谢。
答案 0 :(得分:3)
cat YOURFILE| (read -r; printf "%s\n" "$REPLY"; sort)
答案 1 :(得分:2)
标题是文件的第一行吗? 如果是,请尝试下一个:
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
答案 2 :(得分:0)
您可以在使用sed排序之前删除标题。 未经测试的代码。
for i in file*
do
sed 1d ${i} | sort -k 1,1 -k 3,3n -t\; > h${i}
rm ${i}
done
答案 3 :(得分:0)
这可能适合你(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*
答案 4 :(得分:0)
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