awk и grep для существования - PullRequest
       10

awk и grep для существования

0 голосов
/ 03 апреля 2012

У меня есть текстовый файл, строки которого заключены в двойные кавычки. Я хочу извлечь эти строки и проверить другой файл, чтобы увидеть, существуют они или нет. Прямо сейчас я дошел до:

awk -F'"' '{print $2}' ~/test | <GREP COMMAND>

Как мне пройти извлеченные строки в виде цикла с моей командой grep?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Взгляните на xargs , который читает строки из стандартного ввода и запускает данную команду один раз для каждой строки.Это будет зависеть от того, какую версию xargs вы установили, но я бы начал с чего-то вроде этого:

awk -F'"' '{print $2}' ~/test | xargs -I % grep % <file>

Флаг -I % говорит ему заменить % аргументом, считанным из stdin,вместо добавления его в конец командной строки, которая используется по умолчанию.

1 голос
/ 03 апреля 2012

Укажите в кавычках строки и трубу для grep как файл шаблона:

tr -d '"' < strings.txt | grep --file=- another_file.txt

(Обратите внимание, что это не будет работать правильно с экранированными " символами, но ваша команда awk также не будет работать, поэтому япредположим, что это не проблема.)

Если применимо, использование --fixed-strings с grep также ускорит процесс.

1 голос
/ 03 апреля 2012

Если у вас GNU grep;

grep -f - file

Если нет, вы можете распечатать сценарий sed из awk или создать немного более сложный сценарий awk. Или просто объедините вывод в одно большое egrep выражение;

egrep "$(awk -F'"' '{ printf ("%s%s", j, $2); j="|" }' input)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...