正規表現が期待どおりに機能しない sed

正規表現が期待どおりに機能しない sed

SEDを使ってみたのは今回が初めてです。

単純な文字列を操作するには、置換コマンドを使用できます。良い:

sed -i 's/foo/bar/g' file.txt

ただし、正規表現を使用しようとすると動作が停止します。 URLを識別するために使用する正規表現は次のとおりです。

(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

テキストファイルからすべてのURLを削除しようとしています。これは私の完全なコマンドです。

sed -i 's/(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)//g' file.txt

誰でもこの問題を見ることができますか?

ベストアンサー1

拡張正規表現を有効にするには、コマンド-rに追加する必要があります。sed

-rつまり、、、、、、、には文字通りの意味がなく、?「正規表現」+の意味を()与えるには前にバックスラッシュを付ける必要があります。{}|

バラよりGNUウェブサイトのドキュメントより詳細な説明が必要です。

おすすめ記事