AWK:解压缩并打印文件名和第一行

时间:2014-04-02 12:22:06

标签: unix sed awk

我正在尝试解压缩文件夹中的文件并打印第一行LASTMODIFIEDDATE

但是下面会用' - '

打印第一行
for file in /export/home/xxxxxx/New_folder/*.gz;
do
gzip -dc "$file" |  awk 'NR=1 {print $0, FILENAME}' |  awk '/LASTMODIFIEDDATE/'
done

1.如何修改上述代码以打印解压缩的文件名。 2.我是初学者,建议改进上述代码,欢迎

2 个答案:

答案 0 :(得分:1)

一些问题:

如果你想要解决第一行问题,你的第一个awk应该有双等号:

awk 'NR==1{...}'

您的第二个awk只会看到第一个awk的输出,它只显示第一行,因此除非它们是第一行,否则您将看不到任何包含LASTMODIFIED的行。因此,这将显示第一行和包含LASTMODIFIED的任何行。

for ...
do
   echo $file
   gzip -dc  "$file" | awk 'NR==1 || /LASTMODIFIED/'
done

或者你的意思是:

for ...
do
   gzip -dc  "$file" | awk -v file="$file" 'NR==1{print $0 " " file} /LASTMODIFIED/'
done

将打印第一行后跟文件名以及任何包含LASTMODIFIED的行。

答案 1 :(得分:0)

用回声做这个。在这种情况下,您可能还想使用grep而不是awk。

for file in /export/home/xxxxxx/New_folder/*.gz;
do
    echo $file
    gzip -dc "$file" | grep LASTMODIFIEDDATE
done