Elimina tutte le righe contenenti barra rovesciata dal file di testo


8

Ho un file con contenuti come questo:

apple
b\all
cat
\34
egg

Voglio rimuovere tutte le righe che contengono barre rovesciate. Ho provato a usare

sed '/\/d' pdataf.txt

Ma non ha funzionato. Cosa dovrei provare?

Risposte:


10

Devi solo sfuggire alla barra rovesciata (sfuggire alla fuga!)

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

8

grep, stampando tutte le linee che non hanno \:

grep -v '\\' pdataf.txt

Allo stesso modo awk:

awk '!/\\/' pdataf.txt

1

È necessario sfuggire alla barra rovesciata (carattere di escape) per sostituirlo. E se la tua versione di sed lo supporta, l'opzione -i (sul posto) farà le modifiche al tuo file senza che tu debba fornire un file intermedio. Inoltre, se si utilizza l'opzione -i, si noti che accetta un'estensione di file di backup (consigliata!), Tuttavia se non ne viene fornita una, è utile precedere il comando sed con -e per informare sed che non si sta utilizzando un'estensione del file di backup.

Mettere tutto insieme:

# 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.