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