web-dev-qa-db-ja.com

BASH、awk、sedなどを使用してファイルの最初の2行を削除する

別のファイルに印刷しないで、ファイルの最初の2行を削除しようとしています。派手なものを探していません。ここに私の(失敗した)awkの試みがあります:

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

次のエラーがスローされます。

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

例:

「myfile」の内容:

blah
blahsdfsj
1 
2
3
4

私が結果にしたいこと:

1
2
3
4
30
Amit

テールを使用:

tail -n+3 file

manページから:

   -n, --lines=K
          output the last K lines, instead of the last 10; or use  -n  +K
          to output lines starting with the Kth
64
RobS

どうですか:

tail +3 file

OR

awk 'NR>2' file

OR

sed '1,2d' file
29
anubhava

あなたはもうすぐそこにいます。代わりにこれを試してください:

awk 'NR > 2 { print }' myfile

awkはルールベースであり、ルールが成功すると、そのブロックが実行される前に、ルールは裸(つまり、中括弧なし)に見えます。

また、Jaypalが指摘したように、awkでは、ルールに一致する行を印刷するだけであれば、アクションを省略してコマンドを簡略化することもできます。

awk 'NR > 2' myfile
24
Chris J

awkpattern{action}ステートメントに基づいています。あなたの場合、patternNR>2で、実行したいactionprintです。このactionは、default action of awkでもあります。

でも

awk 'NR>2{print}' filename

うまくいくでしょう、あなたはそれを短くすることができます

awk 'NR>2' filename

6
jaypal singh