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



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

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

我希望它打印文件名,后跟输出中每行前的冒号。我找不到在awk命令完成工作时插入任何内容的方法。使用 awk 不可能做到这一点吗?提前感谢您的任何建议。

awk支持包含文件名的FILENAME变量。你甚至不需要外壳循环。只是:

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

这个怎么样?

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

最新更新