bash - 文字列の取り扱い

IFS変数

Internal Field Separatorの略で、文字列の区切りとして使われる。
デフォルトでは、スペース、タブ、改行。

readコマンド

readコマンドでファイルを読み込ませるとそのファイルの1行ずつをそれぞれの行が標準入力から
入力されたように処理する。1行読み込んだ時IFS変数の値で区切られた文字列を1個ずつ取り出し
順番にその変数(readコマンドの引数)にセットする。

#!/usr/bin/sh
oldifs=$IFS    #IFS変数を保存、変更し、処理が終わったら元に戻す
IFS=:
while read user passwd uid gid gcos remainder
do
    echo "$user"
done < /etc/passwd
IFS=$oldifs

forコマンド

inのあとに指定した文字列を区切るのはスペースかタブ。

#!/usr/bin/sh
for i in `date`  
do                      
    echo $i       
done

setコマンド

setコマンドでは位置パラメータをセットできる。--をオプションにすることにより
その後の文字列を位置パラメータにセットする。

#!/usr/bin/sh
set -- `date`
while [ $# -gt 0 ]
do   
    echo $1
    shift
done

awkコマンド

$ cat /etc/passwd | awk -F: '{print $1 ", "$5}'  #,はスペースを置くという意味

cutコマンド

$ echo "abc:def:ghi" | cut -c5-7
def
$ echo "adc:def:ghi" | cut -d':' -f2
def