Удаление первых двух строк файла с использованием BASH, awk, sed или любого другого - PullRequest
29 голосов
/ 14 января 2012

Я пытаюсь удалить первые две строки файла, просто не печатая его в другой файл. Я не ищу что-то необычное. Вот моя (неудачная) попытка awk:

awk '{ (NR > 2) {print} }' myfile

Это выдает следующую ошибку:

awk: { NR > 2 {print} }
awk:          ^ syntax error

Пример:

содержимое 'myfile':

blah
blahsdfsj
1 
2
3
4

То, что я хочу, чтобы результат был:

1
2
3
4

Ответы [ 4 ]

64 голосов
/ 14 января 2012

Используйте хвост:

tail -n+3 file

со страницы руководства:

   -n, --lines=K
          output the last K lines, instead of the last 10; or use  -n  +K
          to output lines starting with the Kth
27 голосов
/ 14 января 2012

Как насчет:

tail +3 file

OR

awk 'NR>2' file

OR

sed '1,2d' file
23 голосов
/ 14 января 2012

Ты почти у цели.Попробуйте вместо этого:

awk 'NR > 2 { print }' myfile

awk основано на правилах, и правило выглядит голым (т.е. без скобок) перед тем, как блок будет выполнен, если он пройдет.

Также, как указал Jaypalout, в awk, если все, что вы хотите сделать, это напечатать строку, соответствующую правилам, вы можете даже пропустить действие, упрощая команду таким образом:

awk 'NR > 2' myfile
6 голосов
/ 14 января 2012

awk основано на pattern{action} заявлениях. В вашем случае pattern - это NR>2, а action, который вы хотите выполнить, - print. Это action также default action из awk.

Так, хотя

awk 'NR>2{print}' filename

будет работать нормально, вы можете сократить его до

awk 'NR>2' filename.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...