次のようなファイルがあります。
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
いつでも別の方法を試してみてください。
grep
POSIX、sed
オプション、およびシェルの使用:n=$(grep -n bcd foo | cut -d':' -f1); sed -n "${n},$((n + 1))p" myfile
AWKを使う
awk '/bcd/ {print; getline; print}' myfile
もっとあります。