一回も披露したことのない豆知識

ターミナルでsedを使って連続する空白をひとつの=に変換したいのですが、うまく出来ず困っています。
普通のLinuxでは出来たのですが、MacOSXだと出来ません。
どうしたら変換出来ますでしょうか?

df -k / | tail -n 1 | sed -e "s/ \+/=/g"

A 回答 (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等を使う。
    • good
    • 0

BSDのsedなら、


df -k / | tail -n 1 | sed -E "s/ +/=/g"
では?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報