Напечатайте имя файла только тогда, когда найдено - PullRequest
1 голос
/ 06 июля 2019

поэтому у меня есть команда, которая печатает хост, если найден.

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 Ответ

2 голосов
/ 06 июля 2019

Текущее имя файла доступно в переменной FILENAME.Измените эту часть

{p=1}

на

{p=1; print FILENAME}

Если вы хотите только имя файла без пути, используйте:

{p=1;sub(/^.*\//,"",FILENAME);print FILENAME}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...