おぼえがき

おぼえがき

egrep 単語区切り

2007-01-23 | bash
egrep 単語区切り

ファイル

cat test
aa bb c ddcc
aa bb cc dd

これで、ccをgrepしたい。但し、ccって言う単語だけ欲しくて、
ccが含まれている単語は、要らない

egrep '¥<cc¥>' test
aa bb cc dd

¥<¥>がみそ


まぁ、¥bと一緒やな

awk match関数を複数つかう。

2007-01-18 | bash
ログから携帯かつ、必要なアクション名のカウントを抽出したかった

cat ${ファイル名} |
awk -F" " 'match (tolower($13), /"(docomo|kddi|up.browser|
j-phone|vodafone|mot-|softbank)/) &&
match($8, /${必要なアクション}/)
{print $13, $8}' | wc -l

※実際は、一行


matchを2つ使いたいときは、&& で「且つ」にしてあげればいいみたい。


match関数の中で、正規表現使うじゃない。

/正規表現/i
ってやったら、大文字小文字関係なしに、判定してくれるかと
おもったら、動かんのよ。何故だろ。

で、しかたなく、tolower($13)を使ってみた。

正規表現の区切りを"/"じゃなくて、"#"にしても動かんし・・・
なんか、制約がきっとあるなぁ


教えてgooで聞いてみたら
そういうもんだ
と回答が来た。

そういうもんか・・・

bash getoptコマンド

2007-01-18 | bash

getoptsを使ってみる。

while getopts ":abd:h" options
do
  case $options in
    a | b) 何らかの処理;;  # comment
    d   ) OPTDATE=${OPTARG};;  # comment
    h | *) _usage;exit;;     # comment
  esac
done
shift $(($OPTIND -1))


ってやってみる。

オプション
a
b
h
には、オプションに対する引数はない。

d
には、dの後ろに:がついてるんで、引数があるってこと
になる。
引数は、${OPTARG}で取得することができる。

h|*
は、ヘルプを表示する。
abdの先頭に:がついているのは、自分で、オプション以外の
物が来たときにハンドリングするという宣言。
:が先頭になければ、getoptsがエラーハンドリングする。

次に、
shift $(($OPTIND -1))
の処理について・・・

${コマンド}-a -b -d hogehoge -h XYZ 123
ってやったとき
getoptsコマンド終了後、次は、残りの引数を
処理したい。ここで言えば、XYZ 123
オプション部分のみを切り取りたいので
shift $(($OPTIND -1))

を付けること。

んーー。いまいち、しっくりこないが、
これでいけるはず。

もうちょっと、ちゃんと調べないとな