Jak usunąć wszystkie wiersze z pliku tekstowego zawierającego słowa „kot” i „szczur”?
command-line
text-processing
PersonX
źródło
źródło
Odpowiedzi:
grep
podejścieAby utworzyć kopię pliku bez wierszy pasujących do „cat” lub „rat”, można użyć funkcji
grep
reverse (-v
) i opcji całego słowa (-w
).Opcja całego słowa gwarantuje , że nie będzie pasować
cats
lubgrateful
na przykład. Wyjściowe przekierowanie powłoki jest używane (>
) do zapisania jej w nowym pliku. Potrzebujemy-E
opcji włączenia rozszerzonych wyrażeń regularnych dla(one|other)
składni.sed
podejścieAlternatywnie, aby usunąć linie w miejscu, można użyć
sed -i
:Te
\b
granice zestawy słowo id
działanie usuwa wiersz pasujący wyraz między ukośniki.cat
irat
oba są dopasowane do(one|other)
składni, której najwyraźniej potrzebujemy, aby uciec z odwrotnym ukośnikiem.Wskazówka: użyj
sed
bez-i
operatora, aby przetestować dane wyjściowe polecenia przed zastąpieniem pliku.(Na podstawie Sed - Usuń wiersz zawierający określony ciąg )
źródło
Aby przetestować tylko w terminalu, użyj:
Aby naprawdę usunąć te linie z pliku, użyj:
źródło
Wypróbuj vim-way:
źródło
Zastanów się, czy masz plik
file_name
i chcesz wyszukać mysz, ale jednocześnie kilka wierszy myszy ma inne słowa, takie jakcat
i,rat
a nie chcesz, aby były widoczne w wynikach, więc jedynym sposobem na to jest -źródło
przenośny sposób powłoki
Działa w
/bin/sh
, który jestdash
na Ubuntu, a takżeksh
ibash
. Nieco niewygodne, że musisz napisać wiele przypadków testowych dla każdego słowa wcase
instrukcji, ale przenośne. Działa z przypadkami, w których słowo pojawia się samodzielnie na linii, na początku, na końcu linii lub na środku linii i ignoruje miejsce, w którym może być częścią innego słowa.I tak to działa:
źródło