>我有一个脚本来对 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 "%sn" "$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
$ netstat -nt | (sed -u 2q; sort -k4,4V)
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:22 127.0.0.1:54088 ESTABLISHED
tcp 0 0 127.0.0.1:22 127.0.0.1:54096 ESTABLISHED
tcp 0 0 127.0.0.1:900 172.17.0.4:39452 TIME_WAIT
tcp 0 0 127.0.0.1:900 172.17.0.4:39468 TIME_WAIT