1

シェルスクリプトを使用してファイルを読み取り、出力をgrepにパイプして、2つの引用符の間に含まれる文字列を抽出しようとしています(引用符を除外しています)。

./readFile.sh | grep -e "[\^\"]*[\?\"]"

これは、読んでいるファイル I の内容全体を返します。

私のファイルは次のように整理されています。

TITLE="foo"
DATA="bar"
SERVER="foo.bar.server"

http://www.regular-expressions.info/lookaround.htmlの正規表現チュートリアルを読み、先読みと後読みをできる限り使用しようとしましたが、ここで何が問題なのかわかりません。

4

4 に答える 4

7

後読みでこの例を確認しgrep てください

kent$  echo 'TITLE="foo"
DATA="bar"
SERVER="foo.bar.server"'|grep -Po '(?<=")[^"]*'
foo
bar
foo.bar.server

代替はgrep -Po '"\K[^"]*'

于 2013-05-20T14:04:05.403 に答える
0

grep(行全体ではなく) 一致する文字列のみを返したい場合は、 -o(または--only-matching) オプションを使用する必要があります。

于 2013-05-20T14:02:41.080 に答える