Powiedzmy, że mam ten plik linii 857835, zawierający takie rzeczy:
a1
rubbish1
rubbish2
rubbish3
rubbish4
a1
rubbish5
rubbish6
rubbish7
rubbish8
I życzę, aby usunąć wszystkich wystąpień a1
i następną linię ( rubbish1
i rubbish5
w tym przykładzie). Jak mam to zrobić?
Próbowałem grep 'a1' -v -A1
bezskutecznie, a moje umiejętności skilli nie są naprawdę świetne:}
Tym razem mój Google-fu nie był w stanie mi pomóc, proszę o pomoc!
grep
text-processing
sed
rayfoo
źródło
źródło
^
i$
w tym meczu, aby wymusić pasujących całe linie.Poniższe będzie działać na systemach innych niż GNU
sed
(,+1
składnia adresu jest rozszerzeniem GNU):„Zaczynając od wiersza, który odczytuje dokładnie„ a1 ”, a kończąc na następnym wierszu, dla którego istnieje początek wiersza (tj. Następny wiersz), usuń.”
Jest to jednak znacznie mniej rozszerzalne niż odpowiedź @ asoundmove, ponieważ usunięcie innej liczby linii wymagałoby zupełnie innego skryptu.
źródło