仅在找到文件名时打印文件名

时间:2019-07-06 12:41:33

标签: bash shell unix scripting

所以我有一个命令,可以在找到主机时打印出来。

awk -v IGNORECASE=1 -v m="$host" '$2~m {p=1} NF>2 && $2!~m {p=0} p' ${TEMP}/*

这是它的结果

33 VMME87      VMware        51402EC000CF2732 3:0:2
                             51402EC000CF2730 3:0:1
                             51402EC000CF2730 2:0:1
                             51402EC000CF2732 2:0:2
83 VMME87          VMware        51402EC000CF2732 1:2:4
                                 51402EC000CF2730 1:2:3
                                 51402EC000CF2730 0:2:3
                                 51402EC000CF2732 0:2:4

但是,是否还可以将文件名打印到找到的位置?

大概是这样的:

**Name of the file**
33 VMME87      VMware        51402EC000CF2732 3:0:2
                             51402EC000CF2730 3:0:1
                             51402EC000CF2730 2:0:1
                             51402EC000CF2732 2:0:2
echo (space)

**Name of the file**    
83 VMME87          VMware        51402EC000CF2732 1:2:4
                                 51402EC000CF2730 1:2:3
                                 51402EC000CF2730 0:2:3
                                 51402EC000CF2732 0:2:4

如果我使用grep,它会打印文件名,但不会打印最后一列。

Name of the file 33 VMME87      VMware        51402EC000CF2732 3:0:2

1 个答案:

答案 0 :(得分:2)

当前文件名在FILENAME变量中可用。更改此部分

{p=1}

{p=1; print FILENAME}

如果只希望文件名不带路径,请使用:

{p=1;sub(/^.*\//,"",FILENAME);print FILENAME}