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ć
źródło
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ć
Musisz tylko uciec przed ukośnikiem (ucieczka przed ucieczką!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
grep
, drukuje wszystkie wiersze, które nie mają \
:
grep -v '\\' pdataf.txt
Podobnie awk
:
awk '!/\\/' pdataf.txt
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