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


95

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

brew install gnu-sed --default-names

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

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

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

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ですが、すぐに他のコマンドも必要になります)を使用するための助けがあれば、大いに感謝します。


2
brewGNU はどこにインストールしましたsedか?そのディレクトリはあなたのものPATHですか?入力すると何が表示されますsed --versionか?(BSD sedは文句を言います; GNU sedはそのバージョン情報を報告します。)brewあなたがPATHの前にディレクトリを持っているか、/usr/binまたはGNUへの絶対パス名を使うことを学ぶまでsed、あなたはGNUを実行しませんsed。引用符にも注意してください。 とは異なり、ワープロ引用'です。
ジョナサンレフラー

回答:


112

注(2019):

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

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


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

  • --with-default-namesオプションはインストールsed/usr/local/bin/
  • そのオプションがなければインストールされます 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他の人が提案するように使用します。


8
--with-default-namesオプションはサポートされなくなりました
Amol

49

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

$ 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コマンドラインツールをインストールして使用する


19

sedOS Xに同梱されている/usr/binます。

sedそのhomebrewインストールはです/usr/local/bin

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

オプション1

使用するたびにhomebrew sed

/usr/local/bin/sed

または、できれば

オプション2

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

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

16

$ brew install gnu-sed

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

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


これは現在のターミナルセッションでのみ機能することに
注意してください

8

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

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

2

--with-default-namesMac OS X 10.14.2では動作しなかったため、次の名前のシンボリックリンクを作成しましsedgsedより高いが$PATH

また、デフォルトのマンページの代わりにマンページにアクセスできるように、上位sed.1gsed.1マンページに名前を付けたシンボリックリンクも作成しました$MANPATHmangsedsed


4
たとえば、エイリアスを使用することもできalias sed=gsedます。
ケノーブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.