Использование псевдонима или функции bash с переменными среды в нескольких строках

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

Если я сделаю:

{   cut  -sd\" -f2 |
    grep -vFf- pat
}   <<\IN
#   <string name="Introduction">One day there was an apple that went to the market.</string>
#   <string name="BananaOpinion">Bananas are great!</string>
#   <string name="MessageToUser">We would like to give you apples, bananas and tomatoes.</string>
IN

... после сохранения моей собственной копии вашего примера patterns.txt в pat и выполнения вышеуказанной команды, вывод будет:

"ExitWarning"
"SomeMessage"
"Help"

cut выводит в стандартный вывод только второй " двойные кавычки -d исключенный -f поле для каждой строки ввода, совпадающей с разделителем, и -s подавляет все остальные.

То, что cut на самом деле печатает в grep , это:

Introduction
BananaOpinion
MessageToUser

grep ищет в своем именованном файловом операнде строки, которые -v не соответствует фиксированным строкам -F в его - шаблоне stdin -f файл.

Если вы можете положиться на второе поле " -delimited в качестве подходящего, тогда это определенно будет оптимизация по сравнению с режимом grep -P erl, просто сопоставив -F фиксированные струны и только крошечные их части, потому что cut делает тяжелую работу - и делает это быстро .

5
07.12.2017, 19:21
0 ответов

Теги

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