С учетом текстового файла, такого как этот, скажем phrases.txt
с содержанием:
Hahahahahasdhfjshfjshdhfjhdf
Hahahaha!
jdsahjhshfjhfHahahaha!dhsjfhajhfjhf
Hahaha!Hahaha!
dfhjfsf
sdfjsjf Hahaha! djfhjsdfh
Ha! hdfshdfs
Ha! Ha! Ha!
Какая будет подходящая команда grep
в bash, которая будет выводить только строки, содержащие только единичный случай смеха, когда смех определяется как строка вида Hahahahaha!
с произвольным числом ha
с. Первый H
всегда является заглавным, а другие - нет, и строка должна заканчиваться на !
. В моем примере команда egrep должна вывести:
Hahahaha!
jdsahjhshfjhfHahahaha!dhsjfhajhfjhf
sdfjsjf Hahaha! djfhjsdfh
Ha! hdfshdfs
Команда, которую я придумал, была:
egrep "(Ha(ha)*\!){1}" phrases.txt
Проблема с моей командой заключается в том, что она не только выводит строки только с одним появлением смеха. С моей командой также выводятся строки 4 (Hahaha!Hahaha!
) и строка 8 (Ha! Ha! Ha!
), а это не то, что мне нужно.
Есть ли хороший способ сделать это только с помощью grep?