web-dev-qa-db-ja.com

Mac OS 10.10以降でGNU sedを使用する方法、「brew install --default-names」はサポートされなくなりました

Mac OS 10.10.3では、次のように入力してgnu-sedをインストールしました。

brew install gnu-sed --default-names

もう一度入力すると、次のメッセージが表示されます。

gnu-sed-4.2.2はすでにインストールされています

ただし、システムを再起動してターミナルを再起動した後でも、GNUバージョンのsedを使用できません。例えば:

echo a | sed ’s_A_X_i’

戻り値:置換コマンド「i」の不良フラグ

GNUバージョンを機能させるにはどうすればよいですか? $ PATH変数のパスは次のとおりです。

/Users/WN/-myUnix
/opt/local/bin
/opt/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/calibre.app/Contents/MacOS
/opt/ImageMagick/bin
/usr/texbin 

質問が明白な場合は申し訳ありませんが、シェルスクリプトを自分で学んでおり、UNIXプログラムがどのようにインストールされているかをまだよく理解していません。 MacでGNUに準拠したコマンド(この場合はsedですが、まもなく他のものも必要になります)を使用して、損傷や不要な混乱を引き起こさないようにしてください。

77
user3781201

注(2019):

--with-default-namesオプションは、2019年1月以降 削除 であるため、このオプションは使用できなくなりました。

インストール時に、gプレフィックスなしでsedを使用する場合、Homebrewはパスの調整方法を指示します。


--with-default-namesオプションなしでgnu-sedがすでにインストールされています。

  • --with-default-namesオプションを使用すると、/usr/local/bin/sedがインストールされます。
  • そのオプションなしでインストールしますgsed

あなたの場合、あなたがやらなければならないことは:

$ brew uninstall gnu-sed
$ brew install gnu-sed --with-default-names

必要に応じてパスを更新...

$ echo $PATH | grep -q '/usr/local/bin'; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH
$ echo a | sed 's_A_X_i'

または、gsedを他の人が提案したように使用します。

99
Kashyap

Mac OS XのGNUバージョンのsedをインストールする場合:

$ brew install gnu-sed

使用するプログラムはgsedです。

たとえば、次のとおりです。

$ echo "Calimero is a little chicken" > test
$ cat test
Calimero is a little chicken
$ gsed -i "s/little/big/g" test
$ cat test
Calimero is a big chicken

また、Mac OS XでのGNUコマンドツールの使用を補完するために、Linuxからツールを入手するための素敵なブログ投稿があります。

Mac OS/OS XでGNUコマンドラインツールをインストールして使用

40
anquegi

OS Xに同梱されるsed/usr/binにあります。

sedがインストールするhomebrew/usr/local/binにあります。

homebrewを使用する場合、次の2つのオプションがあります。

オプション1

homebrewsedを使用するたびに、入力します

/usr/local/bin/sed

または、できれば

オプション2

次のように、ログインプロファイルのPATHで/usr/local/bin/を前(つまり前)/usr/binに移動します

 export PATH=/usr/local/bin:<other places>
16
Mark Setchell

通常の名前でgnu-sedコマンドを使用する必要がある場合は、bashrcから「gnubin」ディレクトリをPATHに追加できます。 bashまたはターミナルで次のコマンドを使用するだけです。

export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
5
imechemi

$ brew install gnu-sed $ export PATH = "/ usr/local/opt/gnu-sed/libexec/gnubin:$ PATH"

これらの2つのコマンドを使用すると、gnu-sedは適切に動作します

2
K Kishore

--with-default-namesはMac OS X 10.14.2では動作しなかったので、$PATHsedという名前のシンボリックリンクをgsed上位に作成しました

また、sed.1という名前のシンボリックリンクをgsed.1の上位の$MANPATHマンページに作成したので、manはデフォルトのgsedマンページではなく、sedマンページにアクセスします。

1
chipsandslasa