logファイルを整形・加工 (運用・調査で役立つ)


正規表現

規則性がある形にまずしないと何も始まらない。
正規表現を使ってまず加工しやすい形を作る

・以下のようなファイルがあるとする

target=dfaaaaaaaaaaaaaffffsafdsfffsafsdaff<abc>......</abc>
other=asdfaaaaaaaaaaaaaffffaaaaffadddfdafff<abc>......</abc>
other=asdfaaaaaaaaaaaaaffffaaaafaaadfdsfsdafasfffff<abc>......</abc>
other=asdfaaaaaaaaaaaaaffffaaaaffdsdaffdffff<abc>......</abc>
target=dfaaaaaaaaaaaaaffffsafdsfffasff<abc>......</abc>

ありそうな抽出1

取り出したい値が<abc>タグの中

テキストエディタで正規表現を有効にして削除(置換) 終端文字を指定

.*\<abc>

VSCODE例

この後、</abc>を削除すれば取り出せる

ありそうな抽出2

取り出したい値が最初に出現するffffの前まで 開始文字を指定
ffff.*$

その他

複数スペースを一つのスペースにしたい
 +   # (+の前に半角スペースを入れてます)

無駄な改行がある時に改行を消したい
\n+ を \n で置換

スプレッドシート、EXCEL

表形式で見る時や、比較などに便利。

表形式で見る

区切り文字があればそれをタブに置換してEXCELに貼ればOK

↓ 貼り付け

スプレッドシート

式を使う

一つのファイルをあるを分割して複数ファイルに分割したい

以下のCSVを県単位でファイルに吐き出したい。

out.csv
県名,店舗名,住所
福岡県,aaaaa,xxxxxxxx
福岡県,bbbbb,xxxxxxxx
福岡県,ccccc,xxxxxxxx
福岡県,ddddd,xxxxxxxx
佐賀県,eeeee,xxxxxxxx
佐賀県,fffff,xxxxxxxx
佐賀県,ggggg,xxxxxxxx
佐賀県,hhhhh,xxxxxxxx
・
・
・

コマンドはこれでいけるとわかった。

terminal
cat out.csv | grep '福岡県' > 福岡県.txt

でも47都道府県分コマンド作るの面倒だな・・
そんな時はスプレッドシートを使うといい

A列に都道府県
B列に式 ="cat out.csv | grep '"&A1&"' > "&A1&".txt"
を入れて47都道府県分コピーすればOK


ファイルの重複行を除外する

aaa.txt
aaa
aaa
ccc
ccc
ddd
gfgf
ddd
fff
fff
aaa

以下コマンドを実行

 sort aaa.txt | uniq 

重複を除外しユニークになっている

result.txt
aaa
ccc
ddd
fff
gfgf

その他

役に立ちそうなものがあれば追加していきます。