動かざることバグの如し

近づきたいよ 君の理想に

Linuxコマンドで文字列から前後の空白を除去する

やりたいこと

例えば「 hello world 」という前後と文中に半角スペースがある文字列を「hello world」にしたい

方法1 sed

置き換えの万人、sedコマンドを使う。

$echo "  hello world " | sed 's/^[[:blank:]]*//'
hello world

が、いくらなんでも半角スペース消すだけでsedはちょっとオーバースペックじゃないか?

方法2 cat

どういうわけか、パイプで渡すと前後の半角スペースが消える。ので、それをcatで出力すると前後の半角スペースは消える。

echo "  hello world " | echo -e $(cat)
hello world

こうでも可

echo "  hello world " | echo `cat`

若干トリッキーではあるがシンプル。

方法3 xargs

xargsはもともと標準入力から生成したコマンドラインを実行するコマンド。ただxargs側で何もコマンドを指定しないとそのまま出力するので以下のようになる

echo "  hello world " | xargs
hello world

探した中ではこれが一番シンプルだった。

失敗編

今回探してて初めて知ったのがtrコマンドで、sedよりシンプルに文字列の置き換えができる。が、単純に半角スペースを指定すると

echo "  hello world " | tr -d ' '
helloworld

となってしまったので却下。trコマンド自体は便利そうなので覚えておきたい