Я новичок в Bash. У меня есть каталог tags с большим количеством .txt файлов с похожими именами, как это

[coral/home/tags]$ ls:
file1.txt file2.txt file3.txt file4.txt

Каждый файл .txt содержит такую информацию:

line1 b1
line2 b2
line3 b3
line4 b4

Я хочу посмотреть в каждом текстовом файле и найти те, у которых есть слово b3 . Если файл содержит это слово, я хочу, чтобы скрипт записал всю строку и текстовый файл, содержащий это слово.

Это моя неудачная попытка:

#!/usr/bin/env                                                           
PATH=path/to/files
for x in $PATH:
do
  echo $x
done

1 ответ1

1

если вы не возражаете против использования grep:

в каталоге tags :grep -Hrn 'b3' .

  • -H печатает имя файла (подразумевается при поиске нескольких файлов)
  • -r ищет рекурсивно
  • -n печатает номер строки
  • . подстановочные

Потенциально интересный вариант:grep -C 3 'b3' path/to/files вы можете настроить число -C ontext строк, возвращаемых до и после соответствия (здесь это 3).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .