2017-01-29 118 views
1

我的程序打印每一個文件的偶數行當前目錄:通過awk命令打印的行輸出前插入前綴

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

我想它來打印文件,接着前一個冒號的名稱輸出中的每一行。 awk命令執行任務時,我找不到插入任何東西的方法。用awk做這件事是不可能的?提前感謝您的任何建議。

回答

2

awk支持FILENAME變量,其中包含猜猜是什麼?文件名。你甚至不需要shell循環。簡單地說:

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