在输出由awk命令打印的行之前插入前缀

时间:2017-01-29 22:23:53

标签: bash awk

我的程序打印当前目录中每个文件的偶数行:

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

我希望在输出的每一行之前打印文件的名称后跟冒号。当awk命令执行它的工作时,我找不到插入任何东西的方法。用awk做这个是不可能的?提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:2)

awk支持FILENAME变量,其中包含,猜猜是什么?,文件名。你甚至不需要shell循环。简单地说:

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

答案 1 :(得分:0)

怎么样?

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