sed を使用して最初の発生の終わりに停止する部分文字列の抽出

sed を使用して最初の発生の終わりに停止する部分文字列の抽出

部分文字列を抽出する必要がある文字列があり、最後に正規表現が繰り返されます。多くの言語のinstr()関数が最初のインスタンスを返すように、sedは正規表現の最後の最初のインスタンスで停止したいと思います。例:

echo "This is a test some stuff I want string junk string end" | sed -n 's/.*\(.te.*ng\).*/\1/p' 
returns: test some stuff I want string junk string
I want to return: test some stuff I want string

ベストアンサー1

grep方法(要求ポリメラーゼ連鎖反応サポートする):

s="This is a test some stuff I want string junk string end"
grep -Po 'te.*?ng' <<< $s

選ぶ真珠方法:

perl -ne 'print "$&\n" if /te.*?ng/' <<< $s

出力(両方の方法):

test some stuff I want string

  • .*?-?これ欲はない一致するかどうかを伝える修飾子ミニマリストファッション

おすすめ記事