N行目から始まるすべての行を表示したい。たとえば、ファイルの3行目と次のすべての行をファイルの終わりまで印刷します。そのためのコマンドはありますか?
あなたは尾を使うことができます
マンページからの抜粋:
-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 -n +10 file
10行目から始まるファイルの内容を出力します
sed -n '3,$p' file
Stackoverflowは短いコマンドラインを認識しないため、これは単なるフィラーテキストです。
5行目から表示するには:
awk 'NR>4' file
印刷しますが、1行目から2行目を削除します。
sed '1,2d' filename
次のようにawk
を使用できます。
awk 'BEGIN{n=5}NR<=n{next}1' file
BEGIN{n=5}
-ファイル処理を開始する前に、n
をスキップする行数に設定します(5)。NR<=n{next}
-行番号がn
以下の場合、処理をスキップします。1
-print
その他すべての省略形。awk
コマンドは、NR
レコード番号が3以上の行のみを印刷することでこれを実行できます。
awk 'NR>=3' input_file_name
必要に応じて変数を使用してawk
に値を渡すこともできます。
awk -v n=3 'NR>=n' input_file_name
(そして、-v n=${num}
も環境変数を使用します)。
同じ仕事をするために使用できる他の多くのツール、tail
、sed
、およびPerl
があります。これはプログラミングQ&Aサイトであるため、独自のツールを展開してください。 :
#include <stdio.h>
int main (void) {
// Need character and # of newlines to skip.
int ch, newlines = 2;
// Loop until EOF or first lines skipped, exit on EOF.
while ((ch = getchar()) != EOF)
if ((ch == '\n') && (--newlines == 0))
break;
if (ch == EOF)
return 0;
// Now just echo all other characters, then return.
while ((ch = getchar()) != EOF)
putchar (ch);
return 0;
}
これに対して通常、独自のフィルタープログラムを作成することはありませんが、最短のコマンドを要求したので、そのソースコードを使用してx
という実行可能ファイルを作成できます。
x <input_file_name
あなたはそれより短いコマンドを見つけるのに苦労するでしょう。もちろん、UNIXy環境(具体的にはbash
)にいると仮定すると、次のこともできます。
alias x awk 'NR>=3'
:-)