我的程序打印当前目录中每个文件的偶数行:
for file in . *
do
awk 'NR % 2 == 0' "$file"
done
我希望在输出的每一行之前打印文件的名称后跟冒号。当awk命令执行它的工作时,我找不到插入任何东西的方法。用awk做这个是不可能的?提前感谢您的任何建议。
答案 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