Linuxでファイル内の特定の行の後の単語を検索する方法は?

Linuxでファイル内の特定の行の後の単語を検索する方法は?

100行のファイルがあり、「ハッピー」という単語を検索する必要がありますが、検索はファイルの50行から始める必要があります。 Linuxで使用される特定のgrepコマンドは何ですか?

答え1

head+grepとグループコマンドを使用して{...}同じ入力を共有することもできます。

{ head -n 50 >/dev/null; grep PATTERN; } <infile

この方法はhead最初のn行のみをインポートしてダンプし、残りの/dev/null行は処理されますgrep

答え2

以下は、sed50行目からファイルの終わりまで移動し、それを使用してgrepパターンを検索する方法です。

sed -n '50,$p' file.txt | grep "happy"

または、sed正確に以下を使用してください。

sed -n '50,$s/happy/&/p' file.txt

以下はいくつかの追加sed方法です(「Stéphane Chazelas」に感謝します)。

sed '50,$!d;/happy/!d' file.txt
sed -n '50,${/happy/p;}' file.txt

答え3

tail51行目から始めてファイルの内容を取得するために使用されますgrep-i大文字と小文字を無視して(「Happy」、「HAPPY」なども一致させることができます)、前にスペースを追加して「happy」のみを一致させ、その文字シーケンスを含む他の単語を一致させないために使用します。

tail -n +51 filename.txt | grep -i " happy"

答え4

必要になりますawk

awk 'NR>50' filename.txt | grep '\bhappy\b'

関連情報