Pythonのお勉強 Part62 (453レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
174(1): デフォルトの名無しさん [sage] 2020/05/05(火) 15:40:34.82 ID:rwJ86+M0(1/2) AAS
grep -E '^\||Error' -Hd skip ./**/*.log
-E で正規表現。
-d skip で、ディレクトリ名を非表示。
-H で、ファイル名も表示。
ディレクトリの再帰は、./**/*
出力
./test/test01.log:0501 Error!
./test/test01.log:|まちがってるよ
./test/test01.log:|まちがってるよ
この出力から、: の前をファイル名、後を行に、分解すればよい
Ruby の、glob でも出来るけど
180(4): デフォルトの名無しさん [sage] 2020/05/05(火) 18:51:52.49 ID:rwJ86+M0(2/2) AAS
Ruby で作った
# . で始まる、隠し directory, file を除く
glob_pattern = "/mnt/c/Users/Owner/Documents/test/**/*.log"
re = /^\||Error/
first_time = true # 最初の1回だけ
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
# 末尾の改行を削除して、1行ずつ処理する
File.foreach( full_path, chomp: true ) do |line|
line.match( re ) do |matched| # 一致した行だけ
if first_time # 最初だけ
puts full_path
first_time = false
end
puts line
end
end
first_time = true
end
出力
/mnt/c/Users/Owner/Documents/test/test/test01.log
0501 Error!
|まちがってるよ
|まちがってるよ
/mnt/c/Users/Owner/Documents/test/test02.log
|xx
bb Errorzz
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.951s*