やりたいこと
例えば「 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コマンド自体は便利そうなので覚えておきたい