fork download
  1. import re
  2.  
  3. regex = r"^(\w{3}\s+\d+\s\d+:\d+:\d+)\s?:\s?(\w+)\s+:.*(?:\r?\n(?!.*COMMAND).*)*\r?\n.*?COMMAND=(.*(?:\r?\n(?!\w{3}\s+\d+\s\d+).*)*)"
  4.  
  5. test_str = ("Aug 7 14:14:43 : user1 : TTY=pts/53 ; PWD=/path2 ;\n"
  6. " USER=root ; COMMAND=/path/to/cmd1\n"
  7. "Aug 7 14:14:49 : user2 : TTY=pts/53 ; PWD=/usr/home ;\n"
  8. " USER=root ; COMMAND=./myscript.sh -m name -o SCHEDULER\n"
  9. "Aug 7 14:15:14 : user3 : TTY=pts/34 ;\n"
  10. " PWD=/path ; USER=root ;\n"
  11. " COMMAND=/usr/bin/egrep ^[a-z]*\n"
  12. " /filename/toto1234\n"
  13. "Aug 7 14:15:37 : user4 : TTY=unknown ; PWD=/opt/nagios ; USER=root ;\n"
  14. " COMMAND=/path/to/less\n"
  15. " /var/opt/otherfile\n"
  16. "Aug 7 14:16:04 : user4 : TTY=pts/34 ;\n"
  17. " PWD=/usr/local/bin/script ; USER=root ;\n"
  18. " COMMAND=/usr/bin/egrep ^[a-z]*\n"
  19. " /user/local/sbin/tata")
  20.  
  21. print(re.findall(regex, test_str, re.MULTILINE))
Success #stdin #stdout 0.01s 7084KB
stdin
Standard input is empty
stdout
[('Aug  7 14:14:43', 'user1', '/path/to/cmd1'), ('Aug  7 14:14:49', 'user2', './myscript.sh -m name -o SCHEDULER'), ('Aug  7 14:15:14', 'user3', '/usr/bin/egrep ^[a-z]*\n    /filename/toto1234'), ('Aug  7 14:15:37', 'user4', '/path/to/less\n    /var/opt/otherfile'), ('Aug  7 14:16:04', 'user4', '/usr/bin/egrep ^[a-z]*\n    /user/local/sbin/tata')]