次のような文があります。
"The dog jumped over the moon because he likes jumping"
jump.*
そして、一致するすべての単語、つまりjumped
andを見つけたいと思いますjumping
。これどうやってするの?
現在、変数に文があります$sentence
。そして、テストしたい一致単語を知っています。たとえば$test
isjump
です。
ありがとうございました
これを純粋に Bash で行いたい場合は、正規表現マッチング演算子と組み込みのBASH_REMATCH変数を使用して結果を保持できます。例えば:
re='\bjump[[:alpha:]]*\b'
string="The dog jumped over the moon because he likes jumping"
for word in $string; do
[[ "$word" =~ $re ]] && echo "${BASH_REMATCH}"
done
コーパスを考えると、これは次の結果を正しく返します。
jumped
jumping
この正規表現を試してください:
/\bjump.*?\b/
ここを参照してください。\b
は単語の境界に一致し、jump.*?
その間のすべてが で始まりjump
ます。
bash では、grep で使用できます。
echo $sentence | grep -oP "\b$test.*?\b"
echo $sentence | tr ' ' '\n' | grep "^$test"
より徹底するには:
echo $sentence | tr '[[:space:]]' '\n' | grep "^$test"
http://www.linuxjournal.com/content/bash-regular-expressions
それはあなたを助けるかもしれないように見えます。(私は正規表現やbashが苦手です、ごめんなさい)