2015年8月1日土曜日

bashの変数をsedに渡す時に注意したい事。

bashの変数をsedに渡したい。

特にsedの[address,address]commandといった構文で、addressにあたる部分をbashの変数から渡したいという事がある。
addressの次にcommandを書く。
addressは行番号で数値となる。
コマンドは英文字となる。
bashの変数名が英字で終わる場合は、コマンドとの区切りが不明となりエラーとなる。
目視でもわかりにくいので、コマンドの前にスペースを入れると良い。

$ addressa="2";addressb="3";echo -e "1\n2\n3" | sed -n "$addressa,$addressbp"
sed: 1: "2,": expected context address
$ addressa="2";addressb="3";echo -e "1\n2\n3" | sed -n "$addressa,$addressb p"
2
3
詳しくは
O'Reilly Japan - sed & awkプログラミング 改訂版
5章 sedの基本コマンド P88ぐらい に書かれている。

0 件のコメント: