Webエンジニアのメモ帳

技術的な話を中心に書いています。

sedコマンドで「-r」オプションを使おうとするとエラーになる

概要

文字列の変換などで便利なsedコマンド。

「-r」オプションを使おうとすると以下のエラーになってしまいました。

sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]

解決策

「-r」オプションではなく「-E」オプションを使用する。

解説

OSやシェルの種類によっては、「-r」オプションは使えないようです。

そこで、同じ機能を持つ「-E」オプションを使えばよい、とのことでした。

実際に試してみたところ、うまく動作することを確認できました。

// 「id=123」という文字列から「123」を抽出するコマンド
$ echo "id=123" | sed -E "s/id=([1-9]*)/\1/"
123