Sedを使用してコロンの前のすべての文字を置き換える方法は?

Sedを使用してコロンの前のすべての文字を置き換える方法は?

次の文字列を置き換える方法

hd_ma_prod_customer_ro:*:123456789:john.doe

ジョンドと

デフォルトでは、最後のコロン(:)を見つけて、その前のすべてのエントリ(含まれている)を削除する必要があります。

ベストアンサー1

実際、最後のコロンまですべてを削除し、そのままにしたいとしますjohn.doe

echo 'hd_ma_prod_customer_ro:*:123456789:john.doe' |
  sed 's/.*://'

説明する:

最初の行は、例示の目的でテスト文字列をパイプしますsed

二つ目は基礎だ。sed置換。最初と2番目の間の部分は/検索する正規表現で、2番目と3番目の間の部分は置き換えるアイテムです(この場合は削除中なので何もありません)。

正規表現の場合、.任意の文字と一致し、*回数に関係なく繰り返され(0を含む)、:コロンと一致します。したがって、コロンが続くものは何でもあります。コロンを含めることができるので、一致は.*「欲張り」であり、最後のコロンまでのすべての項目を含みます。

おすすめ記事