Я использую 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
впереди, и я не знаю, как добавить номера строк.
Что я могу сделать?
-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
Используйте -n
или --line-number
.
Зайдите man grep
для получения большего количества опций.
Или используйте awk
вместо:
awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file
используйте grep -n -i null myfile.txt
для вывода номера строки перед каждым соответствием.
Я не думаю, что grep имеет переключатель для печати подсчета совпадающих строк, но вы можете просто вывести grep-выход в wc, чтобы выполнить это:
grep -n -i null myfile.txt | wc -l
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"
или в perl (для полноты...):
perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}'
Ссылка на эту ссылку для linux command linux http://linuxcommand.org/man_pages/grep1.html
для отображения строки нет, строка кода и файла используют эту команду в вашем терминале или cmd, GitBash (с помощью терминала)
grep -irn "YourStringToBeSearch"