2013-10-27 4 views
0

Я хочу использовать регулярное выражение, которое находит все строки в тексте, кроме строк, которые я передал с помощью регулярных выражений. Я нашел полезный код здесь enter link description hereawk '/.*test.*/{f=1}f;/end/{f=0}' myFile. Я хочу использовать его наоборот.awk: dont Отображать согласованное регулярное выражение (многострочное)

Я имею в виду, я не хочу видеть линии между тестом и концом, но я хочу, чтобы увидеть другие линии.

Я хочу сделать это на Linux Окружающая среда.

Как я могу отрицать эти AWK?

ответ

0

Некоторые, как этот

awk '/test/ {f=1} !f; /end/ {f=0}' file 

Он будет печатать все строки, пока не найдете test, а затем начать печать снова после end найден.

1

Чтобы увидеть все строки между first и end включительно:

awk '/first/,/end/' 

Чтобы инвертировать, что:

awk '/first/,/end/{next}1' 

(Чуть более читаемо, для второго примера:. awk '/first/,/end/{next}{print}' версия выше, зависит от Действие awk по умолчанию {print}; 1 является эквивалентом true.)

0

sed является более подходящим для этого:

sed '/first/,/end/d' 

удалит все строки, в том числе и между линией не соответствующей шаблоном first до первой строки, соответствующего шаблон end.

Смежные вопросы