[英]Adding file information to an AWK comparison
我正在使用awk對found.txt中的文件列表執行文件比較
while read line; do
awk 'FNR==NR{a[$1]++;next}$1 in a' $line compare.txt >> $CHECKFILE
done < found.txt
found.txt包含指向可能包含該數據的許多文件的完整路徑信息。 雖然我可以確定兩個文件中都存在數據並將其輸出到$ CHECKFILE,但我希望能夠將find.txt(文件名)所在的行放在找到該行的位置。
換句話說,我最終得到如下結果:
File " /xxxx/yyy/zzz/data.txt "contains the following lines in found.txt $line
只是不確定如何將/xxxx/yyy/zzz/data.txt信息獲取到流中。
補充說明:found.txt文件包含系統上多個文件的完整路徑信息。
/path/to/data/directory1/file.txt
/path/to/data/directory2/file2.txt
/path/to/data/directory3/file3.txt
每個文件都有一個參數列表,在腳本的后面將附加信息附加到它們之前,需要檢查這些參數是否存在。
因此,例如,file.txt包含以下字段
parameter1 = true
parameter2 = false
...
parameter35 = true
compare.txt文件也包含許多參數。 因此,如果我在三個文件之一中顯示了parameter35(或其他任何參數),則將其輸出拖放到Checkfile中。
這兩個腳本(您的腳本和我發布的腳本)都將為我提供輸出,但是我也想在循環中該點讀取的行中回顯。 聽起來我只能以某種方式將其引入,但是我的awk專業知識有限。
目前尚不清楚您想要什么,但可以嘗試以下操作(不需要shell循環):
awk '
ARGIND==1 { ARGV[ARGC] = $0; ARGC++; next }
ARGIND==2 { keys[$1]; next }
$1 in keys { print FILENAME, $1 }
' found.txt compare.txt > "$CHECKFILE"
ARGIND是gawk特定的,如果沒有,則添加FNR==1{ARGIND++}
。
將名稱傳遞到awk
的變量中,如下所示:
awk -v file="$line" '{... print "File: " file }'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.