Я пробую к строкам поиска из одного файла в другом файле, и мне нужно было распечатать строку поиска однажды, и строки для соответствий после.
Строки, для которых я хочу найти соответствия, находятся в файле с 2 строками на запись, никакие пустые строки и т.д. Строка 1 содержит имя, строка 2 строка, которую я должен найти во втором файле. sed -n '1~2p'
распечатает все имена, но я должен буду распечатать только имя, передать значение второй строки к grep, выполните команду grep, затем распечатайте имя второй записи (строка 3), передайте строку 4 grep и так далее. Альтернатива должна была бы использовать a while
или until
цикл со счетчиком, увеличенным 2, но затем, я не знаю, как передать значение в противоречии с sed
.
Если я понимаю Вас правильно, то данный
$ 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