2017-01-29 83 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