可能是我在问一个微不足道的问题,但找不到正确的方法。比较两个结果并打印缺少的部分(如果存在)
我在多台服务器上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