Как я могу отформатировать мой вывод grep, чтобы показать номера строк в конце строки, а также количество попаданий?

Я использую grep для сопоставления строки в файле. Вот пример файла:

example one,
example two null,
example three,
example four null,

grep -i null myfile.txt возвращает

example two null,
example four null,

Как я могу возвращать согласованные строки вместе с их номерами строк следующим образом:

  example two null, - Line number : 2
  example four null, - Line number : 4
  Total null count : 2

Я знаю, что -c возвращает общие совпадающие строки, но я не умею правильно отформатировать его, чтобы добавить total null count впереди, и я не знаю, как добавить номера строк.

Что я могу сделать?

Ответ 1

-n возвращает номер строки.

-i - для случая игнорирования. Только для использования, если сопоставление случаев не требуется

$ grep -in null myfile.txt

2:example two null,
4:example four null,

Объедините с awk, чтобы распечатать номер строки после матча:

$ grep -in null myfile.txt | awk -F: '{print $2" - Line number : "$1}'

example two null, - Line number : 2
example four null, - Line number : 4

Используйте подстановку команд, чтобы распечатать общий счетчик нулей:

$ echo "Total null count :" $(grep -ic null myfile.txt)

Total null count : 2

Ответ 2

Используйте -n или --line-number.

Зайдите man grep для получения большего количества опций.

Ответ 3

Или используйте awk вместо:

awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file

Ответ 4

используйте grep -n -i null myfile.txt для вывода номера строки перед каждым соответствием.

Я не думаю, что grep имеет переключатель для печати подсчета совпадающих строк, но вы можете просто вывести grep-выход в wc, чтобы выполнить это:

grep -n -i null myfile.txt | wc -l

Ответ 5

grep найдите строки и выведите номера строк, но не позволяйте "программировать" другие вещи. Если вы хотите включить произвольный текст и выполнить другое "программирование", вы можете использовать awk,

$ awk '/null/{c++;print $0," - Line number: "NR}END{print "Total null count: "c}' file
example two null,  - Line number: 2
example four null,  - Line number: 4
Total null count: 2

Или используя оболочку (bash/ksh)

c=0
while read -r line
do
  case "$line" in
   *null* )  (
    ((c++))
    echo "$line - Line number $c"
    ;;
  esac
done < "file"
echo "total count: $c"

Ответ 6

или в perl (для полноты...):

perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}'

Ответ 7

Ссылка на эту ссылку для linux command linux http://linuxcommand.org/man_pages/grep1.html

для отображения строки нет, строка кода и файла используют эту команду в вашем терминале или cmd, GitBash (с помощью терминала)

grep -irn "YourStringToBeSearch"

Ответ 8

Просто думал, что смогу чем-то помочь тебе в будущем. Чтобы найти несколько строк и номеров выходных строк и просмотреть выходные данные, введите:

egrep -ne 'null|three'

покажет:

2:example two null,  
3:example three,  
4:example four null,   

egrep -ne 'null|three' | less

будет отображать вывод в менее сессии

HTH Jun

Ответ 9

grep -n "search" files чтобы найти любые grep -n "search" files | wc -l grep -n "search" files | wc -l для сколько всего строк