2017-01-29 15 views
1

私のプログラムは、現在のディレクトリ内のすべてのファイルの偶数ラインを出力します。挿入する接頭辞

for file in . * 
do 
    awk 'NR % 2 == 0' "$file" 
done 

私はそれが前にコロンファイルの名前を印刷したいです出力のすべての行。私はawkコマンドがその仕事をしている間に何かを挿入する方法を見つけることができません。 awkを使ってこれを行うことは不可能ですか?ご提案いただきありがとうございます。

答えて

2

awkは、何かを含む変数、ファイル名を含むFILENAME変数をサポートします。シェルループは必要ありません。単純に:

awk 'NR % 2 == 0 {printf "%s:%s\n", FILENAME, $0}' * 
0

これはどうですか?

IFS=$'\r\n' 
for file in . * 
do 
    for line in `awk 'NR % 2 == 0' "$file"` 
    do 
     echo $file: $line 
    done 
done