Как написать цикл для извлечения данных во вновь созданный файл? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть сценарий, в котором я хочу получить вышеупомянутые 2 строки, откуда оно соответствует

У меня есть два файла:

файл 1

Ag
Ab
Ah
Av
Ax

файл 2

jb:fun_0
jb:fun_jack_0
jb1:Ag

jb:fun_1
jb:fun_jack_1
jb1:Ab

jb:fun_2
jb:fun_jack_3
jb1:Ai

jb:fun_4
jb:fun_jack_4
jb1:Ah

jb:fun_5
jb:fun_jack_5
jb1:Av

jb:fun_5
jb:fun_jack_5
jb1:Al

jb:fun_5
jb:fun_jack_5
jb1:Aj

jb:fun_5
jb:fun_jack_5
jb1:Ax

Я хочу добавить для цикла => как

сначала он возьмет слово из файла file1 => наподобие Ag => попытаться найти Ag в файл 2 => если совпадение найдено, то выше 2 строк, из которых оно как совпадение должно быть записано в новый текстовый файл => demo.txt

мой код

for j in file1
do
  sr=`grep -i -B2 '$j' file2` 
  echo $sr>>demo.txt  
done

Но приведенный выше код не работает => предложить мне

ожидаемый результат: Ag совпадение найдено в file2 => выше 2 строки совпадения должны быть напечатаны

как вывод:

=======================
jb:fun_0       # 1st line
jb:fun_jack_0  # 2nd line
jb1:Ag         # => match found
=======================
jb:fun_1       # 1st line
jb:fun_jack_1  # 2nd line
jb1:Ab         # => match found
=======================

то, как вывод будет совпадать с 2 строками, должно быть напечатано

1 Ответ

2 голосов
/ 29 мая 2019

Вы можете использовать следующее:

grep -wFB2 -f file2 file1 > demo.txt

Деталь grep вариантов:

  • -w совпадать только с полными словами: избегать совпадения Avoid при поиске Av
  • -B2 вывод двух предыдущих строк в дополнение к совпадающим строкам
  • -f file2 чтение шаблонов из файла2
  • -F шаблоны - это простой текст, разделенный переводом строк, а не регулярные выражения

Вы можете попробовать здесь !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...