Hapus semua baris yang mengandung garis miring terbalik dari file teks

8

Saya memiliki file yang memiliki konten seperti ini:

apple
b\all
cat
\34
egg

Saya ingin menghapus semua baris yang mengandung garis miring terbalik. Saya mencoba menggunakan

sed '/\/d' pdataf.txt

Tapi itu tidak berhasil. Apa yang harus saya coba?

Zanna
sumber

Jawaban:

10

Anda hanya perlu melarikan diri dari garis miring terbalik (escape the escape!)

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

grep, mencetak semua baris yang tidak memiliki \:

grep -v '\\' pdataf.txt

Demikian pula awk:

awk '!/\\/' pdataf.txt
heemayl
sumber
1

Anda harus melarikan diri backslash (karakter melarikan diri) untuk menggantinya. Dan jika versi sed Anda mendukungnya, opsi -i (di tempat) akan melakukan pengeditan pada file Anda tanpa Anda harus menyediakan file perantara. Selain itu, jika Anda menggunakan opsi -i, perhatikan bahwa ia menerima ekstensi file cadangan (disarankan!), Namun jika Anda tidak menyediakannya, penting untuk mengawali perintah sed Anda dengan -e untuk memberi tahu sed bahwa Anda tidak menggunakan ekstensi file cadangan.

Menyatukan semuanya:

# 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
m0j0hn
sumber