5

重複の可能性:
文字列から正規表現の結果を抽出し、それを変数に書き込む

これが私のコマンドです:

grep -E '\*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile

それは出力します:

  • フィン (成功)

そして、出力のみを希望します:

成功

どうgrepやってそれをするように言うことができますか?

4

3 に答える 3

8

grep コマンドの出力を awk コマンドにパイプできます。

grep -E '*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile | awk '{print $2}'

その正確なユースケースに実際に合わせられていないため、grepだけでそれを行う方法がわかりません。あなたはgrepがあるプラットフォームにいるので、あるコマンドで問題の一部を解決し、別のコマンドで別の部分を解決できる場合は、パイプを有利に使用してください。

于 2012-09-24T16:42:46.243 に答える
4

grepは単一のキャプチャグループを出力することはできませんが、sed代わりにそれを行うために使用できます。

sed 's/\*[[:space:]]\+FIN[[:space:]]\+(\([^)]\+\))/\1/g' file
于 2012-09-24T16:55:22.933 に答える
3

ackを使用する場合は、一致グループと--outputスイッチを使用できます。

ack '\*\s+FIN\((.+?)\)' --output='$1' myfile
于 2012-09-24T17:15:34.190 に答える