J'ai un fichier qui a un contenu comme celui-ci:
Apple
b\all
cat
\34
Egg
Je veux 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 devrais-je essayer?
Vous devez juste échapper à la barre oblique inverse (échapper à l'évasion!)
$ sed '/\\/d' pdataf.txt
Apple
cat
Egg
grep
, imprimant toutes les lignes n'ayant pas \
:
grep -v '\\' pdataf.txt
De même awk
:
awk '!/\\/' pdataf.txt
Vous devez échapper à la barre oblique inversée (caractère d'échappement) pour pouvoir la remplacer. Et si votre version de sed le prend en charge, l’option -i (in-situ) effectuera les modifications de 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!). Toutefois, 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