Mam plik zawierający wiersze, które wyglądają następująco:
14|geauxtigers|90
14|geauxtigers|null
Chcę usunąć wszystkie instancje z pliku o wartości null jako ostatniego terminu. Czy można to zrobić za pomocą komend Unix?
Miałem zamiar wczytać plik za pomocą Java i spojrzeć na sąsiednie linie i usunąć linię, której sąsiednia linia ma podobne pierwsze dwa terminy, ale null jako trzeci termin. Czy można to zrobić za pomocą narzędzi Unix?
Edytuj: Nie chcę ślepo usuwać wszystkich terminów z null jako trzeciego terminu, mogę mieć następujący wpis: 15 | lsu | null Chciałbym to zachować, ponieważ jest to jedyny wpis. Po prostu, jeśli istnieje inna linia z trzecim terminem, który nie jest pusty, chciałbym zachować wartość inną niż null.
sed
igrep
polecenia, pozwolę ekspertom odpowiedzieć na to pytanieOdpowiedzi:
Chciałbym dodać jeszcze jedną odpowiedź, używając awk:
test
źródło
źródło
Zakładając, że linie mogą mieć dowolną kolejność, a wynik jest uporządkowany liczbowo na pierwszym polu, oto rozwiązanie Perla:
źródło
Zakładając, że linie mogą pojawić się w dowolnej kolejności, zeskanuj plik dwukrotnie, najpierw znajdując linie niepuste.
Jeśli linia zerowa zawsze podąża za swoim partnerem:
źródło
Powoduje to potokowanie pliku o nazwie plik (możesz wpisać inną nazwę za kotem) za pomocą polecenia grep, które filtruje linie wzorami. '-V' odwraca dopasowanie, więc wszystkie linie są dopasowane, które nie mają wzorca. Ostatecznie wynik jest umieszczany w pliku2.
źródło
źródło
Spróbuj użyć
grep -v
:źródło
W zależności od smaku Linuksa możesz spróbować czegoś takiego:
źródło