- ベストアンサー
ターミナルでsedを使って連続する空白をひとつの=に変換したいのですが
ターミナルでsedを使って連続する空白をひとつの=に変換したいのですが、うまく出来ず困っています。 普通のLinuxでは出来たのですが、MacOSXだと出来ません。 どうしたら変換出来ますでしょうか? df -k / | tail -n 1 | sed -e "s/ \+/=/g"
- みんなの回答 (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)
- hanabutako
- ベストアンサー率54% (492/895)
回答No.1
BSDのsedなら、 df -k / | tail -n 1 | sed -E "s/ +/=/g" では?