Как инвертировать команду grep -P?Linux

Ответить
Anonymous
 Как инвертировать команду grep -P?

Сообщение Anonymous »

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

Код: Выделить всё

Hello world!
This script is called #!bash
scriptName=$(echo $0)
echo """Hello world!
This script is called $scriptName."""
# Wait, WTF just happened?
echo "Done.".
Done.
Я хотел бы использовать команду grep или sed, чтобы удалить текст исходного сценария. Результат должен выглядеть следующим образом:

Код: Выделить всё

Hello world!
This script is called .
Done.
Я успешно нашел то, что хочу удалить — grep -Pazo "(?s)\#\!bash.*?Done\.\"" outputOops.txt
code> -- но я не могу инвертировать результаты (на самом деле я не знаю Perl, кстати, и, к сожалению, сейчас у меня нет времени его изучать. Я зашел так далеко, основываясь на некоторых ответах StackOverflow, но не понял другие соответствующие ответы достаточно хорошо, чтобы использовать их.) Каждое из следующих значений ничего не возвращает --

Код: Выделить всё

grep -Pazov "(?s)\#\!bash.*?Done\.\"" outputOops.txt
grep -Pazo -v "(?s)\#\!bash.*?Done\.\"" outputOops.txt
grep -Pazo --invert-match "(?s)\#\!bash.*?Done\.\"" outputOops.txt
grep -Pazo "(?s)(?!)\!bash.*?Exiting\.\"" outputOops.txt
grep -Pazo "(?s)(?!)(\!bash.*?Exiting\.\")" outputOops.txt
-- кроме двух последних строк, обе из которых возвращают -bash: !: событие не найдено.
Что я делаю неправильный? Отрицание просто не работает с флагом -P? Если нет, что я могу сделать вместо этого?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -p-command
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»