Как удалить строки из файла до определенного шаблона?

На самом деле вам не следует использовать «Version: ppc64el», но «Architecture: ppc64el», если это программное обеспечение только для ppc64el. Вы также можете использовать «Architecture: any», если ваше программное обеспечение может построить любую архитектуру, которую вы пытаетесь построить.

4
задан 4 October 2017 в 13:37

4 ответа

sed

sed '1,/mail@server\.com/d' # excluding the matched line sed '/mail@server\.com/,$!d' # including the matched line

Пояснения

1,/mail@server\.com/d - d каждую строку из строки 1 - (,) mail@server.com /mail@server\.com/,$!d - не (!) d elete каждую строку от mail@server.com до (,) конец файла ($), но все остальное

Использование

sed '…' file > file2 # save output in file2 sed -i.bak '…' file # alter file in-place saving a backup as file.bak sed -i '…' file # alter file in-place without backup (caution!)

awk

awk 'f;/mail@server\.com/{f=1}' # excluding the matched line awk '/mail@server\.com/{f=1}f' # including the matched line

Пояснения

1,/mail@server\.com/d - d elete каждая строка из строки 1 to [,) mail@server.com /mail@server\.com/{f=1} - если mail@server.com найдено set f=1, поэтому в течение следующего времени f будет отображаться все выражение true в выражении

Использование

awk '…' file > file2 # save output in file2 awk -iinplace -vINPLACE_SUFFIX=.bak '…' file # alter file in-place saving a backup as file.bak awk -iinplace '…' file # alter file in-place without backup (caution!)
10
ответ дан 18 July 2018 в 05:51

Другой подход awk, включая совпадающую строку.

awk '/pattern/, 0' infile

Исключая совпадающую строку.

awk '/pattern/&& getline, 0' infile
2
ответ дан 18 July 2018 в 05:51

sed

sed '1,/mail@server\.com/d' # excluding the matched line sed '/mail@server\.com/,$!d' # including the matched line

Пояснения

1,/mail@server\.com/d - d каждую строку из строки 1 - (,) mail@server.com /mail@server\.com/,$!d - не (!) d elete каждую строку от mail@server.com до (,) конец файла ($), но все остальное

Использование

sed '…' file > file2 # save output in file2 sed -i.bak '…' file # alter file in-place saving a backup as file.bak sed -i '…' file # alter file in-place without backup (caution!)

awk

awk 'f;/mail@server\.com/{f=1}' # excluding the matched line awk '/mail@server\.com/{f=1}f' # including the matched line

Пояснения

1,/mail@server\.com/d - d elete каждая строка из строки 1 to [,) mail@server.com /mail@server\.com/{f=1} - если mail@server.com найдено set f=1, поэтому в течение следующего времени f будет отображаться все выражение true в выражении

Использование

awk '…' file > file2 # save output in file2 awk -iinplace -vINPLACE_SUFFIX=.bak '…' file # alter file in-place saving a backup as file.bak awk -iinplace '…' file # alter file in-place without backup (caution!)
10
ответ дан 24 July 2018 в 18:27

Другой подход awk, включая совпадающую строку.

awk '/pattern/, 0' infile

Исключая совпадающую строку.

awk '/pattern/&& getline, 0' infile
2
ответ дан 24 July 2018 в 18:27

Другие вопросы по тегам:

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