#linux #shell #awk #sed
#linux #оболочка #awk #sed
Вопрос:
Я хочу распечатать содержимое строки подобранного шаблона из входного файла в выходной файл. Я использую:
grep -hnr "pattern" ./input.txt > output.txt
Output.txt файл похож:
this line has the word pattern in it
Но я хочу напечатать имя входного файла в той же строке выходного файла. Например, я хочу, чтобы выходной файл был похож:
input this line has the word pattern in it
Если шаблон совпадает несколько раз во входном файле, я хочу напечатать имена файлов несколько раз. Например:
input this line has the word pattern in it
input this line also has same pattern
и, наконец, я хочу сделать это в каталоге со многими входными файлами (формат *.txt) и сгенерировать один output.txt файлы со всеми результатами.
Комментарии:
1. Просто сделайте
grep -hnr pattern ./*.txt
. Если вы перечисляете несколько входных файлов, grep по умолчанию напечатает имя файла, которое соответствует.2. Все инструменты UNIX имеют страницы руководства.
man grep
.
Ответ №1:
Просто используйте :
grep -H "pattern" ./input.txt > output.txt
От man grep
:
-H, —with-filename
Выведите имя файла для каждого соответствия. Это значение по умолчанию, когда требуется выполнить поиск по нескольким файлам.-h, —no-filename
Подавляют добавление префиксов к именам файлов при выводе. Это значение по умолчанию, когда для поиска требуется только один файл (или только стандартный ввод).