たとえば、文字列があります。
"Icecream123 AirplaneBCD CompanyTL1 ComputerYU1"
私は文字列にIceCreamの部分文字列が確実に含まれていることを知っていますが、それに続くものがわからないとしましょう。
私の例では、123または別の値です。
grepを使用して文字列内の「Icecream」サブ文字列の存在を検出できますが、
echo $string | grep -oF 'Icecream';
印刷されます
Icecream
完全な部分文字列を印刷するコマンドを使用したいと思います。私の例では、次のようになります。
Icecream123
もちろんついてくるアイスクリームはランダムで、事前には分からないので、こうすることはできない。
$SUBSTRING=$(echo $string | grep -oF 'Icecream')
$SUBSTRINGTRAIL=123
echo $SUBSTRING$SUBSTRINGTRAIL
ベストアンサー1
grep
Perl 準拠の正規表現をサポートしている場合は、貪欲にならないように、次の単語の境界と一致させることができます。
echo "$string" | grep -oP 'Icecream.*?\b'
それ以外の場合は、空白以外の文字の最も長いシーケンスと一致します。
echo "$string" | grep -o 'Icecream[^[:blank:]]*'
または、すべてをシェルに保持し、スペースで始まる最長の末尾の文字シーケンスを削除します。
echo "${string%% *}"