Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インフラ勉強会 正規表現の使い方

yuki476
March 17, 2019

インフラ勉強会 正規表現の使い方

2019/03/17実施

yuki476

March 17, 2019
Tweet

More Decks by yuki476

Other Decks in Education

Transcript

  1. 自己紹介:yuki476 SIerで働くエンジニア - チームリーダーとして色々 - NW設計、環境構築、テスト項目・手順の作成と実施、解析。 - 現在は業務管理基盤・AAA基盤の設計、構築、保守運用。 - サーバー/NWとインフラ周りを色々。

    - CISSPホルダー - NWはL2~L3のプロトコル色々。ベンダは主要なもの一通り。 - 絶賛ActiveDirectory(認証周りのあれこれ)に苦戦中 - プログラムは読めるが書くのは簡単なもののみ。 ちゃんとした開発経験は無し。 2
  2. とりあえず覚えておきたい 1 文字系 .: 任意の一文字 \d: 数字一文字 \w: 単語(アルファベット、数字、 _のどれか一文字)

    回数指定系 *: 直前のものを0回以上繰り返し(最長一致 +: 直前のものを1回以上繰り返し(最長一致 {n}: 直前のものをn回繰り返し []: 中の文字列のどれか一つ 9
  3. とりあえず覚えておきたい 2 特殊な文字(メタ文字) ^: 行の先頭 $: 行の末尾 \t: タブ \s:

    半角スペース、タブ、改行のどれか一つ  \n: 改行(Windowsは\r\nの二文字。CRとLF) (A|B): AかBのどっちか (): 後方参照可能なグループにする \: メタ文字のものを使いたい時に付与する(\$:ドルマーク指定) 10
  4. [root@Redmine ~]# journalctl -exl | grep "24 01:40" | grep

    systemd 2月 24 01:40:01 Redmine systemd[1]: Created slice User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Starting User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Started Session 8 of user root. 2月 24 01:40:01 Redmine systemd[1]: Starting Session 8 of user root. 2月 24 01:40:01 Redmine systemd[1]: Removed slice User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Stopping User Slice of root. [root@Redmine ~]# journalctl -exl | grep -e ".*24 01:40.*systemd.*" 2月 24 01:40:01 Redmine systemd[1]: Created slice User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Starting User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Started Session 8 of user root. 2月 24 01:40:01 Redmine systemd[1]: Starting Session 8 of user root. 2月 24 01:40:01 Redmine systemd[1]: Removed slice User Slice of root. 2月 24 01:40:01 Redmine systemd[1]: Stopping User Slice of root. [root@Redmine ~]# Grepでの表示絞り込み 1 <なんかコマンド> | grep -e <正規表現> 13 無理に使わなくても grep二段とかでも同じ事はできる “24日 1:40:xx” の ”systemd”を抜粋
  5. [root@localhost ~]# cat /etc/nginx/conf.d/default.conf | grep -ve \s*#.* -ve ^$

    server { server_name _; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } [root@localhost ~]# Grepでの表示絞り込み 2 <なんかコマンド> | grep -ve <正規表現> 14 -v のnot指定のときは正規表現があるとやれることの幅が大幅に広がる。 コメントと空行を除外
  6. 17 New-ADUser -name “Mizuguchi.Katsumi” ` -Surname “水口” ` -GivenName "克美"

    ` -Displayname “水口克美” ` -UserPrincipalName "[email protected]" ` -EmailAddress "[email protected]" ` -OfficePhone "0981814690" ` -AccountPassword (ConvertTo-SecureString "pvc0s9eH" -AsPlainText -Force) ` -ChangePasswordAtLogon $false ` -Path "OU=Users,DC=example,DC=com" ` -sAMAccountName mizuguchi.katsumi ` 一人分のADアカウント追加するPowerShellのコマンド (例 これを正規表現で一気に生成する。
  7. 23 CSVファイルで変数部分だけ用意 後方参照を利用し共通部分を置換で生成。 - 管理表なんかは大体Excel → CSVに変換可能 - 連番もExcelで楽勝。 -

    ちょっと頑張れば条件に応じてデータ生成とかも可 - それでも面倒なら簡単なスクリプトとか。 Pythonなりスクリプト等でファイル読み込んで自動生成&投入がスマートだが、 プログラム書けないとなかなか難しい。が、正規表現を使えばこのレベルは容易に対応可。 一度使った正規表現と元データの形式は保存しとけば使い回し可能。