Contents
- case文のメモ
- 日付の計算 (date の使い方)
- binary file にレコードを追加する方法
- eval の使い方
- / (スラッシュ)の置換
- 大文字・小文字の変換
- 文字の抽出
- 文字コードの変換
忘れがちなcase文のメモ
#!/bin/bash
case $MM in
"01") MON="Jan" ;;
"02") MON="Feb" ;;
"03") MON="Mar" ;;
"04") MON="Apr" ;;
"05") MON="May" ;;
"06") MON="Jun" ;;
"07") MON="Jul" ;;
"08") MON="Aug" ;;
"09") MON="Sep" ;;
"10") MON="Oct" ;;
"11") MON="Nov" ;;
"12") MON="Dec" ;;
esac
日付の計算 (date の使い方)
$ date -d-30day +%F
2012-08-25
$ date -d2010-01-01+10day +%F
2010-01-11
binary file にレコードを追加する方法
$ cat in.bin >> out.bin
eval の使い方
eval はコマンドを2回繰り返す。慣れれば簡単。
$ CTL0=flx-iso-n\${YEAR}.ctl
$ YEAR=2000
$ CTL=`eval echo $CTL0`
flx-iso-n2000.ctl
応用。
$ CTL0=flx-iso-n\${YEAR}.ctl
$ YEAR=2000
$ NUM=0
$ CTL=`eval eval echo '$CTL'$NUM`
flx-iso-n2000.ctl
応用のやつは、1回目のecho で「$CTL0」が返される。
2回目のecho で、「flx-iso-n${YEAR}.ctl」 が返される。
そして、最後の3回目のecho で、${YEAR}に2000が代入される。
/ (スラッシュ)の置換
$ file=/data/masatano/test.txt
$ echo $file | sed 's/\//\\\\\//g'
\/data\/masatano\/test.txt
ポイントは2つ。
1.「\/」 を 「\\\\\/」(バックスラッシュ5個とスラッシュ1個)で置換する。
2.シングル・クォーテーションを使う。ダブル・クォーテーションだとうまく動作しない場合がある。
大文字・小文字の変換
初めの1文字だけ大文字にするには、${VAR^}。 全て大文字にするには、${VAR^^}。$ VAR="ngongo"
$ echo ${VAR^}
Ngongo
$ echo ${VAR^^}
NGONGO
その他の変換方法については下記サイトを参照。
http://qiita.com/kawaz/items/211266021515b3f033a3
文字の抽出
# 1文字目から4文字目まで抽出$ echo ngo123 | cut -d-4
# 2文字目から4文字目まで抽出
$ echo ngo123 | cut -d2-4
文字コードの変換
日本語漢字フォームがそのままだと読めない。。。。。 文字コードを変換するため、"nkf" をインストールする。$ sudo apt-get install nkf
あとは、下記のように実効すればOK
他の文字コードは、オプションで変更可
参考URL: http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230849/
$ nkf 001.CSV > out.txt