シェルスクリプトによるファイル編集に伴うコマンド群

毎度毎度調べながらじゃないとできなくてうんざりしたので。

  • 引数の数を知る

$#

  • 第1引数、第2引数、、、

$1, $2, ...

  • 全引数

$*, $@

[ -f ${FILE_NAME} ] && mv ${FILE_NAME} ${FILE_NAME}_old
[ -d ${APPLOG_DIR} ] && echo "Directory exists."

  • オプションを取得して、対応を記述する構文

while getopts dnfrl OPTION
do
case ${OPTION} in
a)
...
b)
...
...
esac
done

shift `expr $OPTIND - 1`

下部は引数を前詰めしている

  • コマンドの結果を変数に渡す

CURRENT_DIR = `pwd`

  • リストを対象としたfor構文

PRIME_NUM_LIST="2 3 5 7 11 13 17 19"
for pn in ${PRIME_NUM_LIST}
do
echo $pn
done

  • ファイルの任意の行を削除

sed -e ${LINE_NUMBER}d ${FILE_NAME}

  • ファイルの任意の行に追加

sed -e '${LINE_NUMBER}i ${CONTENTS}' ${FILE_NAME}

  • ファイルの内のある文字列が(最初に)現れた行数を返す

INSERT_NUMBER=`grep -n ${SEARCH_STRING} ${SEARCH_FILE} | sed -e 's/:.*//g' | head -n 1`

  • 変数内のある文字列を置換する変換

${HOGE//${foo}/${bar}}

${HOGE}に含まれる${foo}を${bar}に変換

  • リストを読み、変数に代入する

grep '^LIST_FLAG' ${INPUT_FILE}/$0 | while read v1 v2 v3 v4
do
echo $v2
echo $v4
done

例としては以下
(${INPUT_FILE内})

...
LIST_FLAG HOGE01 FOO01 BAR01
LIST_FLAG HOGE02 FOO02 BAR02
...

(出力例)

...
HOGE01
BAR01
HOGE02
BAR02
...