可能是我在問一個微不足道的問題,但找不到正確的方法。比較兩個結果並打印缺少的部分(如果存在)
我在多臺服務器上ssh'ing,並比較了/ etc/fstab與來自/ proc/mounts的現有掛載的預期nfs掛載。
VAR1=$(awk '!/^#/ && $3 == "nfs" {print $2}' /etc/fstab)
VAR2=$(awk '!/^#/ && $3 ~ /nfs[34]/ && $1 !~ /gfs/ {print $2}' /proc/mounts)
例如,從/etc/fstab
:
/data1
/data2
/data3
而且從/proc/mounts
:
/data1
/data2
如果所有坐騎存在並安裝我要打印一切OK,如果某些失蹤打印出來並重新安裝。
我嘗試了比較工作:
awk 'FNR==NR {a[$1]; next} $1 in a' file1 file2 (but not works with $VAR1/$VAR2).
隨着嵌套循環也沒有成功。
在此先感謝。
在原始文件('/ etc/fstab'和'/ proc/mounts')上使用awk模式來獲取缺少掛載點的列表。您可能想在第一個循環中使用該數組中的$ 3。 – 2014-09-05 17:19:04
@Etan對不起,您能詳細說明一下嗎 – user1607856 2014-09-05 18:02:44
您說過您試圖將awk模式用於此目的,但它不適用於變量。確實如此,但它確實可以處理文件名,並且您只編寫了兩個處理文件名的awk腳本。不要三次運行awk,只運行一次。給它兩個文件作爲參數,併爲第一個文件做'FNR == NR'映射循環,並檢查第二個和唯一打印輸出的線路是否通過檢查。 – 2014-09-05 18:08:28