ファイル名から「_yyyyMMdd.csv」部分を削除した文字列を取得
TABLE=`echo ${FILE_NAME/_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv/}`
TABLE=`echo ${FILE_NAME} | sed -r 's/_[0-9]{8}.csv$//'`
使用例
FILE_NAME=MST_PRODUCT_20110915.csv
TABLE=`echo ${FILE_NAME/_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv/}`
echo "[${TABLE}]"
実行結果
[MST_PRODUCT]
使用例
FILE_NAME=MST_PRODUCT_20110915.csv
TABLE=`echo ${FILE_NAME} | sed -r 's/_[0-9]{8}.csv$//'`
echo "[${TABLE}]"
実行結果
[MST_PRODUCT]
先頭・末尾の空白の連続を削除
# sedそのまま
VALS_=`echo ${VALS} | sed 's/\(^ \+\| \+$\)//g'`
# sedを-rオプションつきで。このほうがシンプルに書ける
VALS_=`echo ${VALS} | sed -r 's/(^ +| +$)//g'`
使用例 (sedそのまま)
VALS=" AKB SKE NMB HKT SDN OJS JKT "
VALS_=`echo ${VALS} | sed 's/\(^ \+\| \+$\)//g'`
echo "[${VALS_}]"
実行結果
[AKB SKE NMB HKT SDN JKT OJS]
使用例 (-rオプションつき)
VALS=" AKB SKE NMB HKT SDN OJS JKT "
VALS_=`echo ${VALS} | sed -r 's/(^ +| +$)//g'`
echo "[${VALS_}]"
実行結果
[AKB SKE NMB HKT SDN JKT OJS]
空白の連続を「カンマと空白一つ」に置換
VALS_=`echo ${VALS} | sed -r 's/ +/, /g'`
使用例
VALS=" AKB SKE NMB HKT SDN OJS JKT "
VALS_=`echo ${VALS} | sed -r 's/ +/, /g'`
echo "[${VALS_}]"
実行結果
[, AKB, SKE, NMB, HKT, SDN, JKT, OJS, ]
文字数を指定しての部分文字列の取得
tailやheadを使う方法
先頭から任意の文字数の文字列を取得
STR=abcdefghi
# 先頭から3文字取得
echo ${STR} | head -c3
→abc
末尾から任意の文字数の文字列を取得
STR=abcdefghi
# 末尾から3文字取得
echo ${STR} | tail -c4
→ghi
先頭から数えて4文字目以降の文字列を取得
STR=abcdefghi
# 先頭から4文字目以降を取得
echo ${STR} | tail -c+4
→defghi
末尾文字をカットした文字列を取得
STR=abcdefghi
# 末尾3文字をカット
echo ${STR} | head -c-4
→abcdef
変数の特殊な呼び方を使う方法
${変数名:位置} 指定位置から末尾までの部分文字列を返す。
※「位置」は0から開始。
echo ${STR:3}
→defghi
${変数名:位置:長さ} 指定位置から長さ分の部分文字列を返す。
echo ${STR:3:3}
→def
2011/09/16