各ファイルの2番目の行を2番目の列に並べ替え、そのファイルの名前を印刷したいと思います。私はこれをしています -
rm tmp;
for filename in file*; do
num=`head -2 $filename | tail -1 | awk '{print $2}'`;
echo "$filename $num" >> tmp;
done;
sort -n -k2,2 tmp
ファイルを含めずにより良い方法で実行できますかtmp
?
ベストアンサー1
努力する:
$ awk 'FNR == 2' file1 file2 filen | sort -n -k2,2
を使用すると、以下を使用して効率を向上させるgawk
ことができますnextfile
。
$ gawk 'FNR == 2 {print FILENAME,$2; nextfile}' file1 file2 filen | sort -n -k2,2
nextfile
あるいは、他の実装で独自の関数を作成することもできますawk
。これ。
それがなければ、より移植性をgawk
高めることができますperl
。
$ perl -anle 'print "$ARGV $F[1]" and close ARGV if $. == 2' file1 file2 filen |
sort -n -k2,2