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ć

Odpowiedzi:


10

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

$ sed '/\\/d' pdataf.txt
apple
cat
egg

8

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

grep -v '\\' pdataf.txt

Podobnie awk:

awk '!/\\/' pdataf.txt

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.