16

これを行うための簡単なスクリプトを作成することはできますが、unix に慣れるための進行中の探求の中で、代わりに組み込みコマンドを使用して効率的な方法を学びたいと考えています。

可変数のヘッダー行を持つ非常に大きなファイルを処理する必要があります。最後のヘッダー行は、テキスト「LastHeaderLine」で構成されます。この行以降をすべて出力したい。(偽陽性の一致については心配していません。)

4

3 に答える 3

27

Aviの回答に似ていますが、「LastHeaderLine」の行は含めません。

sed -e '1,/LastHeaderLine/d'
于 2008-10-13T10:19:30.667 に答える
13

このためにawkを試してみませんか?次のようになります。

awk 'NR == 1, /LastHeaderLine/ { next } { print }' myinputfile > myoutputfile

ここで、NR == 1は最初の行に当てはまり、/LastHeaderLine/は最後のヘッダー行に一致します。コンマ演算子により、次の関数{ next }が 2 つの正規表現の範囲内のすべての文に対して起動されます。この場合、それ以上の操作なしで入力の次の行にスキップします。他のすべての入力行については、行を標準出力に出力します。これは、> を使用してリダイレクトできます。

于 2008-10-13T10:12:37.607 に答える
11

sed を使用:

sed -ne '/LastHeaderLine/,$p' <inputfile

正規表現の一致からファイルの末尾まですべてに一致します。'p' は一致する行を出力します。

編集:

よく考えてみると、LastHeaderLine に一致する行を印刷したくありません。これは sed では困難です。perl では、次のことができます。

perl -ne 'if ($flag) {print;} if (/LastHeaderFile/) {$flag=1;}' <inputfile

これにより、正規表現の一致に厳密に従っている行のみが出力されます。

于 2008-10-13T10:09:47.377 に答える