Ответ 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
Я пытаюсь удалить первые две строки файла, просто не печатая его в другой файл. Я не ищу что-то необычное. Здесь моя неудачная попытка awk:
awk '{ (NR > 2) {print} }' myfile
Это выдает следующую ошибку:
awk: { NR > 2 {print} }
awk: ^ syntax error
Пример:
Содержимое 'myfile':
blah
blahsdfsj
1
2
3
4
Я хочу, чтобы результат был следующим:
1
2
3
4
Использовать хвост:
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
Как насчет:
tail +3 file
ИЛИ
awk 'NR>2' file
ИЛИ
sed '1,2d' file
Ты почти там. Вместо этого попробуйте:
awk 'NR > 2 { print }' myfile
awk основан на правилах, и правило выглядит голым (т.е. без брекетов) до того, как он его выполнит, если он пройдет.
Также, как указал Jaypal, в awk, если все, что вы хотите сделать, это распечатать строку, которая соответствует правилам, вы можете даже опустить действие, упрощая команду:
awk 'NR > 2' myfile
awk
основан на операторах pattern{action}
. В вашем случае pattern
- NR>2
, а action
, который вы хотите выполнить, - print
. Этот action
также является default action
of awk
.
Так что даже если
awk 'NR>2{print}' filename
будет работать нормально, вы можете сократить его до
awk 'NR>2' filename
.