• ベストアンサー

ターミナルでsedを使って連続する空白をひとつの=に変換したいのですが

ターミナルでsedを使って連続する空白をひとつの=に変換したいのですが、うまく出来ず困っています。 普通のLinuxでは出来たのですが、MacOSXだと出来ません。 どうしたら変換出来ますでしょうか? df -k / | tail -n 1 | sed -e "s/ \+/=/g"

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

下記サイトあたりを参考に。 http://www.kt.rim.or.jp/~kbk/regex/regex.html Linuxでは、GNUによって拡張されたsedを使用しています。 # sedに限らず、LinuxではほとんどのコマンドがGNU版を使っています。 対し、Mac OSXはBSD UNIXから派生したもので、標準では、BSD UNIX版のsedしか入っていません。 対処方法は ・BSD版でも使える書き方をする。 → 「A\+」 という正規表現は 「AA*」と等価です。 → -E (Eは大文字)で拡張正規表現を有効にすると、1つ以上の繰り返しは「A+」と表現できます。 ・GNU sedをインストールする 元のsedを消さないように、インストールディレクトリを変更する(/usr/local/bin等) そのディレクトリを先に検索するようにPATHを変更する あるいは、コマンド名を gsed にする。 これらの設定は、ソースからコンパイルするときのconifgureのオプションで行う。 あるいは、Macport等を使う。

その他の回答 (1)

回答No.1

BSDのsedなら、 df -k / | tail -n 1 | sed -E "s/ +/=/g" では?

関連するQ&A

専門家に質問してみよう