4

forループの特定の列に関してソートするスクリプトがあります。並べ替えプロセスでヘッダーをスキップしたいのですが、失敗します。これは私が持っているものです:

for i in file* 
do
  sort -k 1,1 -k 3,3n -t\; ${i} > h${i}
  rm ${i}
done

並べ替えプロセスでヘッダーをスキップし、出力に保持するにはどうすればよいですか?

ありがとう。

4

5 に答える 5

7
cat YOURFILE| (read -r; printf "%s\n" "$REPLY"; sort)
于 2014-03-26T21:58:51.990 に答える
3

ヘッダーはファイルの最初の行ですか?もしそうなら、次のものを試してください:

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
于 2012-06-29T07:17:25.300 に答える
0

sedを使用してソートする前に、ヘッダーを削除できます。テストされていないコード。

for i in file* 
do
  sed 1d ${i} | sort -k 1,1 -k 3,3n -t\; > h${i}
  rm ${i}
done
于 2012-06-29T07:17:27.660 に答える
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
于 2013-03-07T12:17:55.963 に答える
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*
于 2012-07-01T06:22:49.357 に答える