2015-11-02 27 views
0

有沒有辦法在awk中打​​印「空」文件的文件名?在空文件上顯示和/或使用awk FILENAME

試圖回覆另一個需要文件同行的問題(1個文件+相同的文件名+擴展名)我創建了幾個帶觸摸的文件(如此空着)。 比方說:

file1.raw 
file1.raw.ext 
file2.raw 
file2.raw.ext 

我不是使用代碼

awk 'FNR==1{print FILENAME;print FILENAME".ext"};#some other action on line' file*.raw 

結果爲空(右,FNR是從不1)。如何處理打印文件名稱?有沒有FNR==0BEGINF?我可以使用參數列表,並比較,但這將被視爲異步(BEGIN或文件的FNR == 1具有至少1行尾)

expected result 
file1.raw 
(some action result here if file1.raw was not empty) 
file1.raw.ext 
file2.raw 
(some action result here if file2.raw was not empty) 
file2.raw.ext 

回答

1

IDK的爲什麼有些主持人(@ChrisF)刪除了這個第一次但這是這個問題的正確答案,所以讓我們再試一次,如果那個人有問題或評論,那麼他們可能會發布它像一個合理的人而不是錯誤地刪除正確的答案:

GNU awk:

awk 'BEGINFILE{print FILENAME}1' * 

與其他awks(unt ):

awk ' 
FNR==1 { 
    for (++ARGIND;ARGV[ARGIND]!=FILENAME;ARGIND++) { 
     print ARGV[ARGIND] 
    } 
    print FILENAME 
} 
{ print } 
END { 
    for (++ARGIND;ARGIND in ARGV;ARGIND++) { 
     print ARGV[ARGIND] 
    } 
}' * 
+0

@ChrisF我發佈的答案,以及您如此粗魯和錯誤刪除的答案是對這個特定問題的正確答案,所以我又發佈了它。如果你認爲問題是重複的,那就刪除它,但是留下問題但刪除答案的意義何在?如果您有任何問題,請告訴我。 –