hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
06/26/2003 Nightwish [長年日記]
■ [ニュース] ローソンの顧客情報漏洩
この手のは尽きんなぁ.
■ [ニュース] SCOがIBM提訴を決めた本当の理由
しかしIBMは「ライセンスの取消は無効」と言ってるだけで,「流用なんかしてない」とは言ってないんだよね.
まぁ何と言うか,とりあえずSCOは該当箇所を提示しろ,そうすりゃ修正できるっしょ.
■ Snortにリアルタイム警告を実装する(3/3)
syslog-ng と Stunnel を併せて使う.
■ [Gentoo] 各デーモンのプライオリティ
あーこれ便利かも.
■ [Bash][Tips] 正規表現とか
実は [1-5] とか {hoge,foo} とかってのは正規表現の部類に入る. Bash とか各コマンドで使える正規表現には,多少の差こそあれだいたいは似通っている.sed や grep を例に見ると,そこまで違うものでもない.ただし Perl で使える正規表現は別で,拡張された部分がかなり多いので GNU コマンドで使えないものが結構あるので注意.例えば最短マッチ(+? とか *?とか)なんかは多くの GNU コマンドで使えない.
正規表現についてはモノを覚えないとどうしようもない部分が結構あるので各記号の意味については省略.注意点としては,Perl とかみたいに賢くないのでなかなか思った通りにマッチング処理をしてくれないことがあるところ.例えば「直前の文字の1回以上の繰り返し」を意味する + があるけど,\+ という風にエスケープさせなければ機能してくれないことがある.同じように,終端を表す $ 記号があるけど,これは変数と区別するためか \$ とエスケープさせることが推奨されてるらしい(エスケープしなくても一応動作はするけど).ということでエスケープが必要な記号を列挙すると,こんな感じになる.
- \$
- \(
- \)
- \{
- \}
- \?
- \+
- \|
- \<
- \>
- \`
- \'
コマンドによってはもっとあったり,逆にエスケープしなくても良いものがあるけど,まぁここでは grep と sed ってことで.あ,ちなみに grep とか find では,正規表現を使う場合は引数をクォートしなければならないことに注意.
あと,意外と使われてない正規表現の記号(?)として,[[::]] で表せるものがある.例えば [[:digit:]] は数字1文字,つまり [0-9] を表す.
- digit … 数字
- blank … 空白文字全て(タブとか含む)
- alpha … アルファベット
- lower … 小文字
- upper … 大文字
- graph … 空白とタブ以外
- cntrl … コントロールシーケンス
- space … 空白,タブ,改ページ
- alnum … アルファベットと数字
- xdigit … 16進数字
…他にもなんかあった気がするけど忘れた.
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^"
hoge 123 HOGE ,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:alpha:]]//g"
123 ,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:alnum:]]//g"
,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:digit:]]//g"
hoge HOGE ,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:blank:]]//g"
hoge123HOGE,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:upper:]]//g"
hoge 123 ,./\]:;[@\^
bash$ echo -e "hoge\t123 HOGE\t,./\\]:;[@\^" | sed -e "s/[[:lower:]]//g"
123 HOGE ,./\]:;[@\^
こんな感じ.…分かりにくいか.
sedコマンドってroot権限のコマンドではないの???
sedはただ中間に噛ませて整形するコマンド.rootとは関係ないですぞ.
sudo のことですかね?
???
いえ、sedコマンドをユーザーで使っても使えなかったのです。
なのでrootになって使ってみたらうまく行ったので、もしかしてroot権限のコマンドなのかな、と。
expressionが間違っていたという説が濃厚かと.rootしか読めないファイルならエラー出るだろうし.