Linux‎ > ‎

Linux - 文字列編集サンプル


ファイル名から「_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