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
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
これはうまくいくかもしれません (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*