Menggunakan sed untuk menghapus seluruh baris jika hanya berisi nomor tertentu

8

Saya punya file txt

123
456
789
456
123456

Saya ingin menghapus karakter tertentu dari file yaitu (123). Saya mencoba

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

Dalam perintah di bawah ini ketika saya menjalankan kedua kata ( 123dan 123456) semakin dihapus tetapi saya perlu menghapus hanya 123dari file

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

ketika saya menjalankan perintah di bawah 123ini diganti dengan null.

Adakah yang bisa mengatakan bagaimana menghapus seluruh baris jika hanya berisi nomor tertentu?

Rak kundra
sumber
2
Dalam sebuah kata - jangkar
steeldriver
saya tidak mendapatkan apa yang Anda minta?
Rak kundra
1
Perhatikan bahwa walaupun sangat baik untuk menggunakan sed untuk tugas ini, grep adalah alat yang dibuat khusus untuk menampilkan atau menyembunyikan garis input yang cocok dengan pola. Dalam hal ini perintah grep berikut akan melakukan hal yang sama: grep -E-v '^ 123 $' dumm.txt
Gnudiff
4
@ Gudget Saya tidak melihat keuntungan dari grepjika Anda menggunakan seperti itu. Tetapi bisa lebih unggul untuk beberapa tugas karena pilihan itu:grep -xv 123
Philippos

Jawaban:

19

Tidak jelas apakah Anda mencoba menghapus seluruh baris dengan 123atau menggantinya dengan baris kosong. Bagaimanapun, tambahkan saja jangkar awal ^dan akhir $baris ke pola Anda:

sed -i '/^123$/d' dummy.sh      #delete whole line
sed -i 's/^123$//' dummy.sh     #replace with empty line
jimmij
sumber
Yap saya mendapat jawaban saya terima kasih :). Saya mencoba menghapus seluruh baris di sini.
Rak kundra