特定のテキストを特定し、その行と次の行を表示する方法

特定のテキストを特定し、その行と次の行を表示する方法

次のようなファイルがあります。

abcdef
123
ghiflk
234
sfhskdhf
483

文字列を検索したいのですが、出力に次の行(および/または前の行)も含める必要があります。

たとえば、

grep "bcd" myfile

Output:
abcdef
123

または前の行を表示します。

grep "ifl" myfile

Output:
123
ghiflk

数日間オンラインで解決策を見つけようとしましたが、見つからないようです。

ベストアンサー1

GNUおよびBSDユーティリティには、次の行に一致するオプションと前の行に一致するオプションがgrepあります。したがって、次のことができます。-A-B

$ grep -A 1 bcd myfile
abcdef
123

ゲームの終わりにこの行を見せてください。

$ grep -B 1 ifl myfile
123
ghiflk

試合前のラインを示しています。最後に、-C次を使用して一致の前後にN行を表示できます。

$ grep -C 1 ifl myfile
123
ghiflk
234

使用しているバージョンがこの機能をサポートしていない場合は、grepいつでも別の方法を試してみてください。

  • grepPOSIX、sedオプション、およびシェルの使用:

    n=$(grep -n bcd foo | cut -d':' -f1); sed -n "${n},$((n + 1))p" myfile
    
  • AWKを使う

    awk '/bcd/ {print; getline; print}' myfile
    

もっとあります。

おすすめ記事