ファイル内のテキスト文字列を見つけて、その後の残りのテキストのみを出力しますか?

ファイル内のテキスト文字列を見つけて、その後の残りのテキストのみを出力しますか?

このフォーラムでは、テキストファイルでさまざまな値を検索し、その周辺のテキストを出力することに関する記事をたくさん見つけました。しかし、私は「ストリーム志向」を見つけることができないようです。

ファイル内の特定の文字列を見つけて出力したいです。ただファイルの終わりに達するまで続くテキスト。つまり、特定の文字列値に達するまでファイル内のテキストを無視し、その時点でテキストを出力するフィルタなどが必要です。標準出力ファイルの最後まで。使いたい標準出力したがって、必要に応じて出力をファイルにパイプできます。

これを行うのに役立つLinuxテキストユーティリティはありますか?では、どうすればよいですか?または、これを行うためにbashシェルスクリプトを作成する必要がある場合は、これを実行するために使用する一般的な手順とコマンドラインユーティリティは何ですか?

たとえば、次のサンプルファイルが提供されます。

one
two
three
four
five

「3」以降のすべてのテキストを出力すると仮定すると、結果は次のようになります。

four
five

注:関連性があるように見えるこの記事を見つけましたが、ご覧のように少し混乱しています。

テキストを探してそのテキストをコピーする方法は?

答え1

使用awk:

awk 's;/^three$/{s=1}' file

または

awk 's;$0=="three"{s=1}' file
  • s;変数がtrueの場合、行は印刷されますs。パターン/単語が見つかった後、初めてこれが発生します。
  • /^three$/{s=1}sパターン/単語が見つかると、変数はtrue(1)に設定されます。

答え2

GNUの使用sed:

sed 0,/three/d

Linuxはカーネルなのでユーティリティはありません。 GNUは、Debian GNU / LinuxなどのGNU / Linuxシステムの一般的な実装sedです。sedGNU はsedLinux より先にあり、Linux をカーネルとして実行するほとんどのシステムを含む、ほとんどの Unix 系で実行するようにコンパイルされています。それ自体は、1970年代後半0のUNIXユーティリティ(このアドレスを含む一部の拡張を含む)を無料でオープンソースで再実装したものです。sed

答え3

POSIX sedを使用すると、次のことができます。

sed -ne '/three/!d;:a;n;p;ba' inp.file

パールの使用:

perl -lne 'print if 1 <(/three/...eof)' inp.file

関連情報