スポンサーリンク
grepの正規表現で、最短一致で文字列を抽出する
※MACターミナル(BSD系)での動作確認です。
grepの正規表現での検索は、デフォルトは最長一致です。
最短一致にするには、"?" を使います。
".*?"のパターンをよく使います。
例えば、下記のin.txtがあったとします。
$ cat in.txt findfind grep awkfound
"f.*d"でマッチングさせると、最長一致なのでfindfindが引っ掛かります。
参考:grepの-oオプションで検索にマッチした部分のみ出力
$ cat in.txt | grep -o -E "f.*d" findfind found
findのみを引っ掛けたい場合には、"?"を使って "f.*?d"とします。
下記が実行結果になります。
$ cat in.txt | grep -o -E "f.*?d" find find found
スポンサーリンク