grep regex: извлечь шаблон из всех файлов в каталоге - PullRequest
1 голос
/ 12 июля 2010

Допустим, в каталоге есть два файла.Вот содержимое

File1.txt

tagstart random string tagend

tagstart random string tagend

File2.txt

tagstart random string tagend

tagstart random string tagend

Я хочу выполнить поиск в каталоге и извлечь строки, имеющие следующий шаблон

tagstart <any string> tagend

Я также хочу передать вывод в другой файл.По сути, команда grep приведет к получению выходного файла, подобного этому

out.txt

tagstart random string tagend

tagstart random string tagend

tagstart random string tagend

tagstart random string tagend

Ответы [ 3 ]

1 голос
/ 12 июля 2010

file1.txt:

# This is the file nr.1
tagstart 123 tagend
tagstart abc tagend
kill tagstart def tagend kenny

file2.txt:

# This is the file nr.2
tagstart 123 tagend
tagstart abc tagend
kill tagstart xxx tagend kenny

Эта команда извлечет теги и их вложенные строки:

 cat file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" > output.txt

output.txt:

tagstart 123 tagend
tagstart abc tagend
tagstart def tagend
tagstart 123 tagend
tagstart abc tagend
tagstart xxx tagend

Дополнительное печенье для вашего удовольствия:

Эта команда будет делать нечто подобное, но будет отображать только отсортированные уникальные записи и их вхождения (для статистических целей):

 sort file1.txt file2.txt | grep -o -E "tagstart(.*?)tagend" | uniq -c | \
 awk '{print $2" "$3" "$4" : "$1}' > output.txt

output.txt:

tagstart 123 tagend : 2
tagstart abc tagend : 2
tagstart def tagend : 1
tagstart xxx tagend : 1
0 голосов
/ 12 июля 2010

Регулярные выражения редко являются хорошим способом для анализа xml.Задумывались ли вы о таких ситуациях, как tagstart one tagstart two tagend one tagend?

tagstart one tagstart two tagend one tagend
или
tagstart one tagstart two tagend
или
tagstart two tagend
или
tagstart two tagend one tagend
все удовлетворяют вашим критериям.Что из этого вы хотите?

0 голосов
/ 12 июля 2010
grep 'tagstart random string tagend' file1.txt file2.txt > out.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...