bashのfor文での区切り文字
名前のデータ構成されたテキストファイル(names.txt)があって、
MICHEL JACKSON MICHEL JORDAN JEFERRY ARCHER GEORGE BUSH
別のファイルから上記の名前が含まれているラインを取り出したい。
そこでこんなふうに書いてみた。
#/bin/bash for i in `cat names.txt` do grep $i data.txt done
そうすると、for文のところで空白と改行を区切り文字として判断して、上記例だと、
MICHEL JACKSON MICHEL JORDAN JEFERRY ARCHER GEROGE BUSH
の各データでループしてしまう。
ちょっとbashのマニュアルを調べる。
IFSという変数に区切り文字を定義すればいいみたい。上記データのように改行のみを区切り文字としたい場合は以下のとおり。
#/bin/bash IFS=' ' for i in `cat names.txt` do grep $i data.txt done