Я должен искать номер строки определенного соответствия в файле – адресе электронной почты – и затем удалить его с начала файла до подобранной строки.
например, Скажем, номер строки 13807. Таким образом, я должен сохранить 13808 + строки неповрежденный.
Вот пример:
$ cat input
some
lines
before
mail@server.com
and
some
more
afterwards
$ cat output
and
some
more
afterwards
Другой awk
approachs, включая подобранную строку.
awk '/pattern/, 0' infile
, Исключая подобранную строку.
awk '/pattern/&& getline, 0' infile
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
элита каждая строка от 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 'f;/mail@server\.com/{f=1}' # excluding the matched line
awk '/mail@server\.com/{f=1}f' # including the matched line
f
– переменная f
, переменные 0
= false
по умолчанию, awk
печать ничто, если выражение false
и просто печатает строку, если выражение true
/mail@server\.com/{f=1}
– если mail@server.com
найден установленным f=1
, поэтому представляя целое выражение true
в следующий раз f
происходит в выражении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!)