shellのTips
初期値設定
引数が設定されていなかったら、指定した初期値を設定して処理を続ける
func(){ local arg1=${1:-default1} echo $arg1 }
変数を指定した場合
$ func test test
指定していない場合
$ func default1
文字列から指定した文字を削除する
先頭、もしくは末尾からであれば、sedやperlを使うまでもない。
先頭の場合には、「#」末尾の場合には「%」を使う
target="1234567890"
先頭の123を削除
echo ${target#123}
末尾の890を削除
echo ${target%890}
先頭の3文字を削除
echo ${target#???}
末尾の3文字を削除
echo ${target%???}
先頭の4までを削除
echo ${target#*4}
末尾の7までを削除
echo ${target%7*}
ファイル target.txt の各行から先頭の3文字をなくしたものを result.txt に保存
cat target.txt | while read n do echo ${n#???} done > result.txt
sedの場合
cat target.txt | sed -e 's/^...//' > result.txt
perlの場合
cat target.txt | perl -nlpe 's/^...//' > result.txt
パス区切り文字列の場合
親ディレクトリのパスを取得するなら
dirname $filepath
ファイル名だけ取りだすなら
basename $filepath
拡張子を切りとるなら
basename $filepath .txt