sed - 交換なしで簡単な正規表現の置き換え

sed - 交換なしで簡単な正規表現の置き換え

sedを使用してホスト名のリストからサブドメインプレフィックスを削除しようとしていますが、正規表現を使用しても何も置き換えられません。これはうまくいかない簡単な例です。

echo "subdomainxyz.example.com" | sed 's/[a-z]+\.example\.com//'

特定のサブドメインをハードコードするとうまく機能します。

echo "subdomainxyz.example.com" | sed 's/subdomainxyz\.example.com/example.com/'

ベストアンサー1

質問を送信する前に回答を見つけましたが、すでに入力しているので、誰かに役立つかどうかを投稿します。

必要な鍵は、文字クラス/範囲構文とプラス演算子を使用するために必要な拡張正規表現のサポートを通知する-rフラグ(一部のバージョンでは)を追加することです。それはあなたがしなければならないことのようです(何らかの理由でデフォルトは拡張正規表現だと思いましたが、間違っていました)。-Esed[a-z]+grepsed

以下は実際の例です。

echo "subdomainxyz.example.com" | sed -r 's/[a-z]+\.example\.com/example.com/'

編集(クレジット steeldriver):

プラス記号を外すと -r は不要です。例:

echo "subdomainxyz.example.com" | sed 's/[a-z]\+\.example\.com/example.com/'

おすすめ記事