2021-07-02 11:51:49 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
#shellnotes - m.py
|
|
|
|
#(C) Dimitris Marakomihelakis
|
|
|
|
#Released under the "All rights reserved" category. See the RIGHTS.txt file
|
|
|
|
#in /docs/github/ for its full text.
|
|
|
|
|
2021-07-02 09:50:21 +02:00
|
|
|
import sys
|
2021-07-02 11:45:43 +02:00
|
|
|
import os.path
|
|
|
|
from os import path
|
|
|
|
import subprocess
|
2021-07-02 17:19:01 +02:00
|
|
|
from subprocess import check_output
|
|
|
|
import re
|
2021-07-02 09:50:21 +02:00
|
|
|
|
|
|
|
class Multi():
|
|
|
|
|
|
|
|
def __init__(self, patterns, files):
|
|
|
|
self.patterns = patterns
|
|
|
|
self.files = files
|
|
|
|
|
2021-07-02 17:43:27 +02:00
|
|
|
def remove_duplicates(self):
|
|
|
|
self.patterns, self.files = list(dict.fromkeys(self.patterns)), list(dict.fromkeys(self.files))
|
|
|
|
|
2021-07-02 10:41:52 +02:00
|
|
|
def print_matches(self):
|
2021-07-02 11:45:43 +02:00
|
|
|
|
2021-07-02 10:41:52 +02:00
|
|
|
for file in self.files:
|
2021-07-02 17:19:01 +02:00
|
|
|
try:
|
|
|
|
if file == "": return 0
|
|
|
|
print("\n"+file if path.exists('Notes/'+file) else f"{file} (not found):\n-")
|
|
|
|
print("=" * len(file) if path.exists('Notes/'+file) else "")
|
2021-07-02 11:45:43 +02:00
|
|
|
|
2021-07-02 17:19:01 +02:00
|
|
|
for pattern in self.patterns:
|
|
|
|
if pattern == "": return 0
|
|
|
|
with open('Notes/'+file, 'r') as f:
|
|
|
|
for line in f:
|
|
|
|
if re.search(pattern, line):
|
|
|
|
out = os.system(f"""echo -n "'{pattern}'": && grep -n --color=always {pattern} Notes/{file}""")
|
|
|
|
#bug: pattern is generated multiple times
|
|
|
|
except FileNotFoundError: pass
|
2021-07-02 11:45:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
try:
|
|
|
|
newMulti = Multi(sys.argv[1].split(','), sys.argv[2].split(','))
|
2021-07-02 17:43:27 +02:00
|
|
|
newMulti.remove_duplicates()
|
2021-07-02 11:45:43 +02:00
|
|
|
newMulti.print_matches()
|
|
|
|
except IndexError:
|
|
|
|
patterns = input("Enter patterns, separated by a comma: ")
|
|
|
|
files = input("Enter files, separated by a comma: ")
|
|
|
|
newMulti = Multi(patterns.split(','), files.split(','))
|
2021-07-02 17:43:27 +02:00
|
|
|
newMulti.remove_duplicates()
|
2021-07-02 11:45:43 +02:00
|
|
|
newMulti.print_matches()
|
|
|
|
|
2021-07-02 09:50:21 +02:00
|
|
|
|
2021-07-02 11:45:43 +02:00
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|