использование sed, чтобы циклично выполниться через записи в файле и использовать grep на всех записях

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

Строки, для которых я хочу найти соответствия, находятся в файле с 2 строками на запись, никакие пустые строки и т.д. Строка 1 содержит имя, строка 2 строка, которую я должен найти во втором файле. sed -n '1~2p' распечатает все имена, но я должен буду распечатать только имя, передать значение второй строки к grep, выполните команду grep, затем распечатайте имя второй записи (строка 3), передайте строку 4 grep и так далее. Альтернатива должна была бы использовать a while или until цикл со счетчиком, увеличенным 2, но затем, я не знаю, как передать значение в противоречии с sed.

0
задан 6 November 2017 в 17:33

1 ответ

Если я понимаю Вас правильно, то данный

$ head File\ {1..3}
==> File 1 <==
foo
Pattern 1
bar

==> File 2 <==
foo
bar
baz

==> File 3 <==
Pattern 3
foo
baz

и

$ cat infile
File 1
Pattern 1
File 2
Pattern 2
File 3
Pattern 3

затем

$ sed -E '$!N; s/(.*)\n(.*)/grep -H -- "\2" "\1"/e' infile
File 1:Pattern 1

File 3:Pattern 3

или

$ while read -r file; do 
    if read -r pattern; then grep -H -- "$pattern" "$file"; fi
  done < infile 
File 1:Pattern 1
File 3:Pattern 3
2
ответ дан 1 November 2019 в 06:37

Другие вопросы по тегам:

Похожие вопросы: