Как я могу отформатировать мой вывод 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
для сколько всего строк