Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sed : suppression de lignes

10 réponses
Avatar
antoine.valmer
Bonjour Í  tous,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022

Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."
@+ et merci.
A. Valmer

10 réponses

Avatar
Jérémy Prego
Bonjour,
et en échappant les "." ?
genre:
sed '/49.7.20/' /tmp/file.txt
Jerem
Le 09/09/2022 Í  19:22, antoine.valmer a écrit :
Bonjour Í  tous,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."
@+ et merci.
A. Valmer
Avatar
Hugues Larrive
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------0257a6478bb6dd0610cd30482a2c2095a25873a2d193369a1d860184a0c990cd
Content-Type: multipart/mixed;boundary=---------------------5d796aea3e89c0147e97ee0461ec4a6d
-----------------------5d796aea3e89c0147e97ee0461ec4a6d
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;charset=utf-8
------- Original Message -------
Le vendredi 9 septembre 2022 Í  19:22, antoine.valmer a écrit :
Bonjour Í  tous,

Bonjour,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."
@+ et merci.
A. Valmer

Essayez avec grep :
grep -v '49.7.20.' le_fichier.txt
(-v, --invert-match sélectionner les lignes sans correspondance)
@+
Hugues
-----------------------5d796aea3e89c0147e97ee0461ec4a6d
Content-Type: application/pgp-keys; filename="publickey - - 0xE9429B87.asc"; name="publickey - - 0xE9429B87.asc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="publickey - - 0xE9429B87.asc"; name="publickey - - 0xE9429B87.asc"
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4ak1FWUZFMWNSWUpLd1lCQkFI
YVJ3OEJBUWRBWlB0M2dhekNrdHVzaXFla2gzcnNsM0FLV0lUaUR1VGEKWk9tZEhCWjBtb3pOSDJo
c1lYSnlhWFpsUUhCdExtMWxJRHhvYkdGeWNtbDJaVUJ3YlM1dFpUN0Nqd1FRCkZnb0FJQVVDWUZF
MzRRWUxDUWNJQXdJRUZRZ0tBZ1FXQWdFQUFoa0JBaHNEQWg0QkFDRUpFRnZWSk5jdgo0dmswRmlF
RTZVS2JoNHIyQ0RlSDZZRkJXOVVrMXkvaStUUWpDQUQvYTNwQ0hBSStsT2o1NHVOVVNTU0MKTDE4
NjFQYjI4YWs2K2JvRnN6bnVHc0FCQVBVczh3QnJLQXZxZ0RWYXFZdVd6d1BjTXNnZWJ3U0huOER3
Cmp1SDV6VmdPempnRVlGRTFjUklLS3dZQkJBR1hWUUVGQVFFSFFPbDZ3OXNiR1lmZHZOeVVPb3pj
cExiZgp0aW56SWMraDVicS9rMU91TXdVRkF3RUlCOEo0QkJnV0NBQUpCUUpnVVRmaEFoc01BQ0VK
RUZ2VkpOY3YKNHZrMEZpRUU2VUtiaDRyMkNEZUg2WUZCVzlVazF5L2krVFRoUEFEOUZTNFlrcFR0
RXJWNDFPRTBBaTNYClIxNlcrT3REa1p3bTZRVTY0VnUzSmJvQkFMMURMQngxRExLRE5kclZhTUZ1
NGp4MXBZV0JqTEpVZ0xLegpzbDMzakRNTQo9NXVpVgotLS0tLUVORCBQR1AgUFVCTElDIEtFWSBC
TE9DSy0tLS0tCg=-----------------------5d796aea3e89c0147e97ee0461ec4a6d--
--------0257a6478bb6dd0610cd30482a2c2095a25873a2d193369a1d860184a0c990cd
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
Version: ProtonMail
wnUEARYKAAYFAmMbfPQAIQkQW9Uk1y/i+TQWIQTpQpuHivYIN4fpgUFb1STX
L+L5NN62AP9/hzSTPXIyHUFebFWlhgJMdLVCg/T81qm85ArN4Af2EAEA+uH2
hZFEW1z7tWwt3IKO4iokh30kte9tcWOXLj8X3Qs=Elio
-----END PGP SIGNATURE-----
--------0257a6478bb6dd0610cd30482a2c2095a25873a2d193369a1d860184a0c990cd--
Avatar
Jérémy Prego
Oupss, j'ai oublier le /d de la fin de la commande ... désolé
sed '/49.7.20/d' /tmp/file.txt
Jerem
Le 09/09/2022 Í  19:47, Jérémy Prego a écrit :
Bonjour,
et en échappant les "." ?
genre:
sed '/49.7.20/' /tmp/file.txt
Jerem
Le 09/09/2022 Í  19:22, antoine.valmer a écrit :
Bonjour Í  tous,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."
@+ et merci.
A. Valmer
Avatar
̓‰tienne Mollier
--T5FlXr0c7oXKY3BV
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Bonjour,
antoine.valmer, on 2022-09-09:
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tent̓© cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."

Bizarre, chez moi ̓§a marche͂ :
$ echo '49.7.20.111|17August2022' | sed '/49.7.20/d'
$ echo '49.7.20.120|18August2022' | sed '/49.7.20/d'
$ echo '11.2.33.123|19August2022' | sed '/49.7.20/d'
11.2.33.123|19August2022
Peut-̓ªtre qu'il y a une subtilit̓© entre diff̓©rentes versions de
sed utilis̓©es͂ ? Mais j'ai essay̓© avec GNU sed et busybox sed
sans avoir de probl̓¨mes͂ :
$ sed --version
sed (GNU sed) 4.8
Packaged by Debian
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
[Í¢€¦]
$ busybox sed --version
This is not GNU sed version 4.0
Bonne soir̓©e,
--
̓‰tienne Mollier
Fingerprint: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da
Sent from /dev/tty1, please excuse my verbosity.
--T5FlXr0c7oXKY3BV
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEj5GyJ8fW8rGUjII2eTz2fo8NEdoFAmMbjg4ACgkQeTz2fo8N
Edp4mA//QgoTGU1LMu/YmJoAh3E3O/J+eDe29y23fHVhsLgqRbo5HbgjM9lbo/U9
NtC0sqEsgduVzdQ3nhZIWZd9EZaiPcaNSGxQB3kqutxFb5nuxQh44Qqc0qCpCwVl
iY29zpkVRVVtlZaJsBXxCWJ1goXKfzuebG6PWt/UYPgtofiM7zJwhve+7Q6bPc4i
Pa/W+CVlNx3o42Cy6O4UiF0i4trWSwlxxZlMXEykY0AACbV/jN1kFQCMZ3uWlGUr
PT5L64FBd5F8Yi7FCSUr+2nCvVTXjz4XVuNEHRZJX33X50ZnVv7iezyJ8kjFqb3f
twWntXXQ+6i09K4zeXjix0hFBuRdP1HyG1NHpxI8DrWccYIwcieCgTw3uW8XLRF6
/CWCry22n6+elHxj9Ps5jOjAl8KgcsBcutNqApNe7dzeYyLV6Kjv4tJWW5rgEvB6
exqgVKXSTkHCRzUQdohJglzMDXoo5Qy9rEIeVfgBHfmNigrceoh5h1lNMfAUktya
hJMZH5AHMlk3RIDX2X7TODMTTbaTublmLl1+2z8TCRnucoSvTUqLprPhVeZvepB9
oJkGin54CApU031vV3nVG7kW4BDxB0KuPL5DN7Ys2Vej9pg+lAAUBV+NZtYFdWhR
R03/IoCVnOXP+0ks0N4OPWT6ASt/VKZOryMkhy9nrJpZwtvD6Co=+0YD
-----END PGP SIGNATURE-----
--T5FlXr0c7oXKY3BV--
Avatar
Pierre ESTREM
Bonsoir,
Attention Í  ne pas avoir inséré un caractère spécial Í  la place d'un espace.
Ca m'est arrivé (comme Í  d'autres).
pierre estrem
Le 09/09/2022 Í  19:22, antoine.valmer a écrit :
Bonjour Í  tous,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."
@+ et merci.
A. Valmer
Avatar
Marc Chantreux
On Fri, Sep 09, 2022 at 09:41:14PM +0200, Pierre ESTREM wrote:
Attention Í  ne pas avoir inséré un caractère spécial Í  la place d'un espace.
Ca m'est arrivé (comme Í  d'autres).

la bonne astuce pour verifier: tapper fc
la commande s'ouvre alors dans editor et si c'est vim. perso j'ai
set listchars=tab: │,trail:▧,nbsp:▧
et dans 99% je découvre que j'ai introduit un espace npsp pret d'un pipe
(alt-space alt-6 au lieu de space alt-6).
--
Marc Chantreux
PÍ´le de Calcul et Services Avancés Í  la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200
Avatar
Marc Chantreux
salut,
sed '/49.7.20/d'

je te confirme que le script est bon ... meme trop puisque 4937420 va
aussi matcher.
pour bien faire il te faudrait
sed '/49[.]7[.]20/d'
mais le plus rapide (Í  l'écriture et Í  l'excution) est de chercher une
chaine litterale puisque c'est ton cas:
grep -vF 49.7.20
il faut évidement que tu donnes un nom de fichier ou que stdin puisse
consommer qqchose.
mais elle n'efface aucune ligne contenant "49.7.20."

comme ton problème n'est pas dans ton sedscript, tu pourrais nous donner
un exemple plus complet (entrée, commande complète, sortie)?
par exemple chez moi
<<. cat > oops
49.7.20.111|17August2022
49.7.20.120|18August2022
11.2.33.123|19August2022
.
for cmd desc (
9/sed '9base sed'
t/sed 'toybox sed'
b/sed 'busybox sed'
sed 'coreutils sed'
) {
print avec $desc
$cmd '/49.7.20/d' oops
echo
}
me donne bien
avec 9base sed
11.2.33.123|19August2022
avec toybox sed
11.2.33.123|19August2022
avec busybox sed
11.2.33.123|19August2022
avec coreutils sed
11.2.33.123|19August2022
--
Marc Chantreux
PÍ´le de Calcul et Services Avancés Í  la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200
Avatar
Jean-Marc
--------------p03mo9jEFYzXmdJsBKvjN2Q1
Content-Type: multipart/mixed; boundary="------------f9gajIv75xE4qdFOgF0nAW3W";
protected-headers="v1"
From: Jean-Marc
To:
Message-ID:
Subject: Re: sed : suppression de lignes
References:
In-Reply-To:
--------------f9gajIv75xE4qdFOgF0nAW3W
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
TGUgOS8wOS8yMiDDoCAxOToyMiwgYW50b2luZS52YWxtZXIgYSDDqWNyaXTCoDoNCj4gQm9u
am91ciDDoCB0b3VzLA0KPiBEYW5zIHVuIGZpY2hpZXIgdGV4dGUsIGonYWkgY2UgdHlwZSBk
ZSBsaWduZXMgOg0KPiA0OS43LjIwLjExMXwxN0F1Z3VzdDIwMjINCj4gNDkuNy4yMC4xMjB8
MThBdWd1c3QyMDIyDQo+IA0KPiBKZSBzb3VoYWl0ZSBzdXBwcmltZXIgdG91dGVzIGNlbGxl
cyBxdWkgb250IGNldHRlIGV4cHJlc3Npb24gOg0KPiAiNDkuNy4yMC4iDQo+IEonYWkgdGVu
dMOpIGNldHRlIGNvbW1hbmRlIDoNCj4gc2VkICcvNDkuNy4yMC9kJw0KPiBtYWlzIGVsbGUg
bidlZmZhY2UgYXVjdW5lIGxpZ25lIGNvbnRlbmFudCAiNDkuNy4yMC4iDQoNCnNlZCAtaSAn
L140OVwuN1wuMjAvZCcgbm9tLWRlLXRvbi1maWNoaWVyDQoNCg0KDQo+IEArIGV0IG1lcmNp
Lg0KDQpkZSByaWVuLg0KPiBBLiBWYWxtZXINCg0KLS0gDQpKZWFuLU1hcmMNCg --------------f9gajIv75xE4qdFOgF0nAW3W--
--------------p03mo9jEFYzXmdJsBKvjN2Q1
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature"
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQQe1tJ1wH7aHlIabXRcceD57QuFWAUCYxxThwAKCRBcceD57QuF
WMCQAP9Oz5m5wzeK5nGfji1PJFwVf/m77y4J0nWsuCuLRNvVYgD9HDdmWUEIVBeJ
sdst8gRnnCqOViwz+dJzri1zzJSjswQ=qbWt
-----END PGP SIGNATURE-----
--------------p03mo9jEFYzXmdJsBKvjN2Q1--
Avatar
antoine.valmer
Le 9/09/22 Í  19:22, antoine.valmer a écrit :
Bonjour Í  tous,
Dans un fichier texte, j'ai ce type de lignes :
49.7.20.111|17August2022
49.7.20.120|18August2022
Je souhaite supprimer toutes celles qui ont cette expression :
"49.7.20."
J'ai tenté cette commande :
sed '/49.7.20/d'
mais elle n'efface aucune ligne contenant "49.7.20."


Hello,
Grand merci Í  tous ceux qui m'ont répondu,
voici la commande que j'ai tapée :
sed -i '/49.7.20/d' fichier.txt
qui a bien marché.
Je retiens aussi les autres commandes qui m'ont été indiquées.
Bonne journée.
On Saturday 10 September 2022 11:06:15 Jean-Marc et d'autres wrote:
sed -i '/^49.7.20/d' nom-de-ton-fichier
Avatar
Marc Chantreux
salut,
J’aurais donc donné cette commande :
sed -i '/^49.7.20./d' fichier.txt

perso je metacaractère entre crochets parceque je trouve ca plus facile
* de le visualiser apres coup
* de l'étendre (le [.] qui devient [ :] avec le temps)
* de l'embarquer dans un autre script en réduisant le quoting hell
sed -i '/^49[.]7[.]20[.]/d' fichier.txt
Il est préférable d’ajouter également le « . » Í  la fin pour éviter de
supprimer par exemple une ligne « 49.7.201 » qu’on souhaiterai
conserver par exemple…

et si jamais tu veux trouver '49.' autre part qu'au début de ta ligne,
un début de mot (<) t'évitera d'embraquer 149. attention, il te faut
l'utiliser avec -r ou -E (je préfère noter -r par experience d'autres
impleméntations de sed).
<<. sed -r '/<49[.]/d'
149.
# 49.
.49.
route49.
# 149.
49.
donne:
149.
route49.
# 149.
--
Marc Chantreux
PÍ´le de Calcul et Services Avancés Í  la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200