Bash, как разобрать логи и проверить соответствие строк с различным форматированием - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть файл журнала, который я пытаюсь проанализировать, который выглядит примерно так с другими пропущенными строками

[10:44:20] [4m[36m$ -PATH /users/helloworld/folder[0m
...
[10:44:21] ▸ [35m-PATH[0m
[10:44:21] ▸ [35m/users/helloworld/folder[0m

Я хочу иметь небольшой скрипт, чтобы сказать, если первое и второе вхождения -PATH match / users / helloworld / folder

Я не уверен, как учесть первое вхождение в той же строке , что и , а второе вхождение в next line

И затем возможность выводить "MATCHED" или "DIDNT MATCH" в зависимости от того, совпадают ли эти вхождения.

Я довольно новичок в regex / grep, так что нахожумне трудно разобраться в этом, спасибо заранее.

1 Ответ

0 голосов
/ 18 декабря 2018

Насколько я понял, вам нужно распечатать совпадения путей в журналах и распечатать их, если их количество равно 2, если это так, то не могли бы вы попробовать следующее.

awk '
match($0,/\/[^\[]*/){
  a[substr($0,RSTART,RLENGTH)]++
}
END{
  for(i in a){
    if(a[i]==2){
       print "MATCHED for path " i,a[i]
    }
    else{
       print " DID NOT match for path ",i,a[i]
    }
  }
}'  Input_file

Вывод будетследующим образом.

MATCHED for path /users/helloworld/folder 2
...