我在100台服务器上有/ etc / fstab条目,我正在尝试编写一个awk脚本来识别以下内容。
sup01p.abc.com.au | SUCCESS | rc=0 >>
10.15.23.25:/tools /data/store nfs defaults,nodev 0 0
10.15.23.25:/kdump01 /data/kdump nfs defaults,nodev 0 0
10.15.23.25:/ops /data/ops nfs defaults,nodev 0 0
我需要的是,首先我的awk脚本需要打印域名,然后它应该打印
10.15.23.25:/tools /data/store - this is an invalid entry,
工具在商店中未正确安装且无效,但正确安装了kdump01 在kdump上,ops正确安装在ops上)
如何使用awk或sed打印这样的报告? (仅打印无效的nfs挂载)
输出应该是这样的
sup01p.abc.com.au
10.15.23.25:/tools /data/store
我设法添加了以下脚本,它列出了servername和挂载点
cat check | awk '$1~/com.au/{ print $1 ;next} /10.15.23.25/{print $1;}/data/{print $2;print "======"}'
sup01p.abc.com.au
10.15.23.25:/tools
/data/store
======
10.15.23.25:/kdump01
/data/kdump
=====
10.15.23.25:/ops
/data/ops
======
答案 0 :(得分:1)
awk 解决方案(针对您当前的输入):
cat check | awk 'NR==1{ print $1; next }{ m=substr($1,index($1,"/")+1);
sub(/[^a-z]+/,"",m); if($2!~m) print $1,$2 }'
输出:
sup01p.abc.com.au
10.15.23.25:/tools /data/store
答案 1 :(得分:0)
尝试以下:
awk 'NR==1{print $1;next} {split($1, a,"/");split($2, b,"/");if(a[2] !~ b[3]){print $1,$2}}' Input_file
EDIT1: 此处也添加了非单一形式的解决方案。
awk 'NR==1{
print $1;
next
}
{
split($1, a,"/");
split($2, b,"/");
if(a[2] !~ b[3]){
print $1,$2
}
}
' Input_file