このコマンドを MacOSX 端末で実行しようとしていますが、当初は Linux で実行する予定でした。
sed '1 i VISPATH=/mnt/local/gdrive/public/3DVis' init.txt >> ~/.bash_profile
しかし、それは私にエラーを与えます:
command i expects \ followed by text.
上記のコマンドを MacOSX 端末で動作するように変更する方法はありますか
同じ問題があり、brewで解決しました:
brew install gnu-sed
gsed YOUR_USUAL_SED_COMMAND
sed コマンドを使用する場合は、エイリアスを設定できます。
alias sed=gsed
OSXsed
は古いバージョンに基づいているので、sedへの道順をもっと文字通りにする必要があります。幸運なことに、この場合は、sed
正確に何をすべきかを教えてくれます。OSXを持っていないのでテストされていませんが、試してみてください
sed '1 i\
VISPATH=/mnt/local/gdrive/public/3DVis
' init.txt >> ~/.bash_profile
cmdを介した入力i
は、空白行で終了します。その後、他のsedの指示に従うことができます。注意してください、charの後に\
charはありません!
また、@StephenNiedzielskiは正しいです。一重引用符を使用して、sedステートメントをラップします。(sed内で変数の拡張が必要で、他の使用法を回避できる$
場合は、dbl-quotesを使用することもできますが、通常の方法としてはお勧めしません。
編集
スクリプトや他のエディターではなく、コマンドラインからこれを実行していることを理解したので、上記をテストしました。....私が言えるのはテクニカルサポートからの有名な行だけです... "わたしにはできる"。エラーメッセージが表示された場合
sed: -e expression #1, char 8: extra characters after command
次に、ほぼ確実に、の後にいくつかの文字を追加しました \
。テストしたところ、上記のエラーメッセージが表示されました。(私はLinuxバージョンのsedを使用しているので、エラーメッセージはまったく同じです)。質問を編集して、コマンドラインの正確なカットアンドペーストと新しいエラーメッセージを含める必要があります。curly-single-quotesの使用は機能しません。
IHTH
これが OS X での解決方法です。私の場合、ファイルの前にテキストを追加する必要がありました。どうやら、最新の sed は次のように機能します。
sed -i '1i text to prepend' file.txt
しかし、OS XI では、次のことを行う必要がありました。
sed -i '' '1i\
text to prepend
' file.txt
リッチ テキストをコピーしたようです。一重引用符は、カーリーではなくまっすぐにする必要があります。
sed '1 i VISPATH=/mnt/local/gdrive/public/3DVis'