2014-04-02 40 views
0

我試圖在文件夾解壓文件和打印第一線LASTMODIFIEDDATEAWK:解鏈和打印文件名和第一線

但低於將打印第一行以「 - 」

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

1。我如何修改上面的代碼來打印解壓縮的文件名。 2.我是一個初學者,建議改進上面的代碼,歡迎您致電

+0

您可能意指'NR == 1'只打印第一行(在這種情況下,您可能還希望規則中的「退出」不處理文件的其餘部分,您可以將其與'&&/LASTMODIFIEDDATE /'模式匹配,在一個awk而不是兩個中執行此操作。 –

回答

0

用回聲做到這一點。在這種情況下,你也可能想使用grep而不是awk。

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

此時可能需要'awk -vfile = $ file'和'{print $ 0,file}'而不是'FILENAME'。 –

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 

,它將打印的第一行,然後將文件名也包含上次更改的行。