Xóa tất cả các dòng chứa dấu gạch chéo ngược khỏi tệp văn bản


8

Tôi có một tệp có nội dung như thế này:

apple
b\all
cat
\34
egg

Tôi muốn xóa tất cả các dòng chứa dấu gạch chéo ngược. Tôi đã thử sử dụng

sed '/\/d' pdataf.txt

Nhưng nó không hoạt động. Tôi nên thử cái gì?

Câu trả lời:


10

Bạn chỉ cần thoát khỏi dấu gạch chéo ngược (thoát khỏi lối thoát!)

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

8

grep, in tất cả các dòng không có \:

grep -v '\\' pdataf.txt

Tương tự awk:

awk '!/\\/' pdataf.txt

1

Bạn cần phải thoát dấu gạch chéo ngược (ký tự thoát) để thay thế nó. Và nếu phiên bản sed của bạn hỗ trợ nó, tùy chọn -i (tại chỗ) sẽ thực hiện các chỉnh sửa trên tệp của bạn mà không cần bạn phải cung cấp tệp trung gian. Ngoài ra, nếu bạn sử dụng tùy chọn -i, lưu ý rằng nó chấp nhận tiện ích mở rộng tệp sao lưu (được khuyến nghị!), Tuy nhiên, nếu bạn không cung cấp một tùy chọn, thì rất hữu ích trước lệnh sed của bạn với -e để thông báo cho sed rằng bạn không sử dụng một phần mở rộng tập tin sao lưu.

Để tất cả chúng cùng nhau:

# 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.