Używając seddo modyfikacji pliku w miejscu:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
To instruuje, sedaby usunąć wszystkie linie nie pasujące do wzorca. Wzór jest sama ^(start linii), a następnie przez jedną reportlub -tnastępnie albo hczy o.
Należy pamiętać, że nie jest to faktyczna modyfikacja na miejscu: sedtworzy tymczasową kopię zapasową i zastępuje ją oryginalnym plikiem.
Jeśli chcesz sedzachować kopię zapasową oryginalnego pliku (co może być dobrym pomysłem, jeśli plik zawiera krytyczne dane), podaj -iprzełącznikowi rozszerzenie, aby utworzyć plik kopii zapasowej:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
zmodyfikuje your_filei utworzy kopię zapasową oryginału o nazwie your_file.bak.
Notatka dodatkowa
Proszę, nie mylcie moich intencji ani nie obrażajcie się na to, ale zauważyłem, że macie wiele podobnych pytań związanych z wyrażeniami regularnymi / przetwarzaniem tekstu. Radzę, aby rozpocząć naukę sed, awki grepna własną rękę do prędkości dopomóc swojej wydajności. Ponownie, nie zrozumcie mnie źle, jestem bardzo szczęśliwy, mogąc pomóc (podobnie jak większość ludzi tutaj); po prostu myślę, że możesz czerpać ogromne korzyści z podnoszenia tych narzędzi do codziennego użytku.
Aby udowodnić, jak pomocni są tutaj ludzie, zastanów się nad sugestią @ slm w komentarzach poniżej i zapraszam do tego czatu w dowolnym momencie na pytania.