Sử dụng sed để xóa toàn bộ một dòng nếu nó chỉ chứa một số cụ thể


8

Tôi có một tập tin txt

123
456
789
456
123456

Tôi muốn xóa các ký tự cụ thể khỏi tệp tức là (123). Tôi đã thử với

$ sed -i '/123/d' dummy.sh
$ vi dumm.txt
456
789
456

Trong lệnh dưới đây khi tôi chạy cả hai từ ( 123123456) đang bị xóa nhưng tôi chỉ cần xóa 123khỏi tệp

$ sed -i 's/123//g' dummy.sh
$ vi dumm.txt
456
789
456
456

Khi tôi chạy lệnh dưới đây, 123nó sẽ được thay thế bằng null.

Bất cứ ai cũng có thể nói làm thế nào để xóa toàn bộ một dòng nếu nó chỉ chứa số cụ thể?


2
Nói một cách dễ hiểu - mỏ neo
thép

tôi không nhận được những gì bạn đang hỏi?
Rak kundra

1
Lưu ý rằng mặc dù sử dụng sed cho tác vụ này là hoàn toàn ổn, grep là công cụ được tạo riêng để hiển thị hoặc ẩn các dòng đầu vào khớp với mẫu. Trong trường hợp này, lệnh grep sau sẽ thực hiện tương tự: grep -E -v '^ 123 $' dumm.txt
Gnudiff

4
@Gnudiff Tôi không thấy bất kỳ lợi thế nào grepnếu bạn sử dụng là như thế. Nhưng nó có thể vượt trội hơn đối với một số nhiệm vụ do các tùy chọn của nó:grep -xv 123
Philippos

Câu trả lời:


19

Không rõ nếu bạn đang cố gắng xóa toàn bộ dòng bằng 123hoặc thay thế nó bằng dòng trống. Dù sao đi nữa, chỉ cần thêm các neo của đầu ^và cuối $dòng vào mẫu của bạn:

sed -i '/^123$/d' dummy.sh      #delete whole line
sed -i 's/^123$//' dummy.sh     #replace with empty line

Yep tôi đã nhận được câu trả lời của tôi cảm ơn bạn :). Tôi đang cố gắng để xóa toàn bộ dòng ở đây.
Rak kundra
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.