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*