GNU/Linux >> Linux の 問題 >  >> Linux

GNU Grep は選択したグループを出力できますか?

sed を使用できます このため。 BSD sed で :

echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"

または、-E なし オプション:

sed "s/.*'\([^']\+\)'.*/\1/"

これは複数行入力では機能しません。そのために必要なもの:

sed -n "s/.*'\([^']\+\)'.*/\1/p"

grep は特定のグループを出力することはできませんが、先読みと背後のアサーションを使用して、次のことを実現できます。

<ブロック引用>

echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"


\K を使用できます 左側の一致テキストを、一致テキストに追加されない先読みとともにリセットして破棄するには:

$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar

GNU grep のみ。


Linux
  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. 出力の検索を制限し、信号13を回避しますか?

  3. ターミナルでマルチスレッドGrepを開始する方法は?

  1. SedまたはGrepを使用して正規表現に従って部分文字列を抽出しますか?

  2. カラー出力をgrepする方法

  3. ディレクトリを grep -R から除外するにはどうすればよいですか?

  1. grep:グループ キャプチャ

  2. grep から cp に出力をパイプする方法は?

  3. grep 出力から一意の結果を除外するにはどうすればよいですか?