Usuń wszystkie wiersze zawierające ukośnik odwrotny z pliku tekstowego

8

Mam plik o takiej treści:

apple
b\all
cat
\34
egg

Chcę usunąć wszystkie wiersze zawierające ukośniki odwrotne. Próbowałem użyć

sed '/\/d' pdataf.txt

Ale to nie zadziałało. Co powinienem spróbować

Zanna
źródło

Odpowiedzi:

10

Musisz tylko uciec przed ukośnikiem (ucieczka przed ucieczką!)

$ sed '/\\/d' pdataf.txt
apple
cat
egg
Zanna
źródło
8

grep, drukuje wszystkie wiersze, które nie mają \:

grep -v '\\' pdataf.txt

Podobnie awk:

awk '!/\\/' pdataf.txt
heemayl
źródło
1

Musisz uciec od ukośnika odwrotnego (znak ucieczki), aby go zastąpić. A jeśli twoja wersja sed go obsługuje, opcja -i (na miejscu) dokona edycji pliku bez konieczności podawania pliku pośredniego. Ponadto, jeśli użyjesz opcji -i, zauważ, że akceptuje ona (zalecane!) Rozszerzenie pliku kopii zapasowej, jednak jeśli go nie podasz, przydatne jest poprzedzenie polecenia sed wartością -e, aby poinformować sed, że nie używasz rozszerzenie pliku kopii zapasowej.

Kładąc wszystko razem:

# Run sed to remove lines with backslash in them

$ sed -i -e '/\\/d' pdataf.txt

# Cat your file to confirm edits

$ cat pdataf.txt
apple
cat
egg
m0j0hn
źródło