Подтвердить что ты не робот

Удаление первых двух строк файла с помощью BASH или awk или sed или любого другого

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

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

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

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

Пример:

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

blah
blahsdfsj
1 
2
3
4

Я хочу, чтобы результат был следующим:

1
2
3
4
4b9b3361

Ответ 1

Использовать хвост:

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

Ответ 2

Как насчет:

tail +3 file

ИЛИ

awk 'NR>2' file

ИЛИ

sed '1,2d' file

Ответ 3

Ты почти там. Вместо этого попробуйте:

awk 'NR > 2 { print }' myfile

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

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

awk 'NR > 2' myfile

Ответ 4

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

Так что даже если

awk 'NR>2{print}' filename

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

awk 'NR>2' filename.