goo blog サービス終了のお知らせ 
goo

egrep 単語区切り

egrep 単語区切り

ファイル

cat test
aa bb c ddcc
aa bb cc dd

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

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

¥<¥>がみそ


まぁ、¥bと一緒やな
コメント ( 0 )

awk match関数を複数つかう。

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

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で聞いてみたら
そういうもんだ
と回答が来た。

そういうもんか・・・
コメント ( 0 )

bash getoptコマンド


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))

を付けること。

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

もうちょっと、ちゃんと調べないとな
コメント ( 0 )

bash これはよむ

http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=bash
http://www-06.ibm.com/jp/developerworks/linux/010615/j_l-bashfv.html
コメント ( 0 )

bash ファイルの中身を消す

ファイルの中身を消すとき。
一度開いて、"1,$d" ってやって保存
sed -e "1,$d" ${ファイル}

っていうのより。

cat /dev/null > ${ファイル}

ちなみに

: > ${ファイル}

で同じ意味

っていうほうが良いね。
コメント ( 0 )
« 前ページ 次ページ »