Supprimer toutes les lignes contenant une barre oblique inverse du fichier texte

8

J'ai un fichier qui a un contenu comme celui-ci:

apple
b\all
cat
\34
egg

Je souhaite supprimer toutes les lignes contenant des barres obliques inverses. J'ai essayé d'utiliser

sed '/\/d' pdataf.txt

Mais ça n'a pas marché. Que dois-je essayer?

Zanna
la source

Réponses:

10

Vous avez juste à échapper à la barre oblique inverse (échapper à l'évasion!)

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

grep, en imprimant toutes les lignes qui n'ont pas \:

grep -v '\\' pdataf.txt

De même awk:

awk '!/\\/' pdataf.txt
heemayl
la source
1

Vous devez échapper à la barre oblique inverse (caractère d'échappement) pour la remplacer. Et si votre version de sed le prend en charge, l'option -i (sur place) fera les modifications sur votre fichier sans que vous ayez à fournir un fichier intermédiaire. De plus, si vous utilisez l'option -i, notez qu'elle accepte une extension de fichier de sauvegarde (recommandée!), Mais si vous n'en fournissez pas, il est utile de faire précéder votre commande sed avec -e pour informer sed que vous n'utilisez pas une extension de fichier de sauvegarde.

Mettre tous ensemble:

# 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
la source