文字列を検索し、文字列の一部を知る文字列を返します。

文字列を検索し、文字列の一部を知る文字列を返します。

たとえば、文字列があります。

"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

grepPerl 準拠の正規表現をサポートしている場合は、貪欲にならないように、次の単語の境界と一致させることができます。

echo "$string" | grep -oP 'Icecream.*?\b'

それ以外の場合は、空白以外の文字の最も長いシーケンスと一致します。

echo "$string" | grep -o 'Icecream[^[:blank:]]*'

または、すべてをシェルに保持し、スペースで始まる最長の末尾の文字シーケンスを削除します。

echo "${string%% *}"

おすすめ記事