#1 Le 04/08/2015, à 07:31
- Bruno93200
ET et OU avec Stream Editor (SED)
Bonjour,
petit problème avec SED :
soit un gros fichier qui contient des lignes contenant AAA, BBB, CCC, etc.
je voudrais sélectionner les lignes qui m'intéressent et détruire les autres
je sais faire :
/AAA/d # détruire les lignes qui contiennent AAA
/AAA/!d # détruire les lignes qui ne contiennent pas AAA
/BBB/!d # détruire les lignes qui ne contiennent pas BBB
etc.
mais je ne sais pas extraire la liste des lignes qui contiennent AAA, BBB mais pas CCC, DDD
merci de votre aide,
Bruno
Hors ligne
#2 Le 04/08/2015, à 09:47
- credenhill
Re : ET et OU avec Stream Editor (SED)
hello
supprime les lignes qui contiennent AAA ou BBB mais pas CCC ou DDD
$ cat fichier
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
$ sed '/AAA\|BBB/ {/CCC\|DDD/! d}' fichier
AAA BBB CCC
AAA BBB CCC DDD
Hors ligne
#3 Le 04/08/2015, à 15:32
- ar barzh paour
Re : ET et OU avec Stream Editor (SED)
@credenhill
je n'arrive pas à faire fonctionner cette syntaxe
fichier :
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
CCC DDD
EEE
sed '/AAA\|BBB/ {/CCC\|DDD/! d}' fichierAAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
CCC DDD
EEE
@Bruno93200
en deux fois :
sélection des lignes contenant AAA ou BBB
sed -n '/AAA\|BBB/p' fichier >f1
puis selection des lignes ne contenant pas CCC ou DDD
sed '/CCC\|DDD/ d' f1>f2
mais on doit pouvoir faire en une seule passe !
sed -n '/AAA\|BBB/p' fichier >f1
cat f1
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
sed '/CCC\|DDD/ d' f1>f2
cat f2
AAA
AAA BBB
Dernière modification par ar barzh paour (Le 04/08/2015, à 15:49)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 04/08/2015, à 15:39
- credenhill
Re : ET et OU avec Stream Editor (SED)
bizarre
$ cat fic
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
CCC DDD
EEE
$ sed -n '/AAA\|BBB/ {/CCC\|DDD/! p}' fic
AAA
AAA BBB
Hors ligne
#5 Le 04/08/2015, à 15:55
- ar barzh paour
Re : ET et OU avec Stream Editor (SED)
oui ça ca fonctionne
sed -n '/AAA\|BBB/ {/CCC\|DDD/! p}' fichier
je ne connais pas l'utilisation des {......}
Dernière modification par ar barzh paour (Le 04/08/2015, à 15:58)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 05/08/2015, à 07:54
- credenhill
Re : ET et OU avec Stream Editor (SED)
ça permet de grouper les commandes
$ printf "%s\n" {1..5} | sed '1 s/$/ xx/; s/^/aa /'
aa 1 xx
aa 2
aa 3
aa 4
aa 5
$ printf "%s\n" {1..5} | sed '1 {s/$/ xx/; s/^/aa /}'
aa 1 xx
2
3
4
5
Hors ligne
#7 Le 05/08/2015, à 14:07
- Bruno93200
Re : ET et OU avec Stream Editor (SED)
Bonjour,
j'ai testé
$ cat fic
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
CCC DDD
EEE
$ sed -n '/AAA\|BBB/ {/CCC\|DDD/! p}' fic
AAA
AAA BBB
qui fonctionne, mais j'aurais voulu ne garder que les lignes qui contiennent AAA et BBB
le test suivant ne fonctionne pas bien :
/AAA\|CCC/ {/BBB\|DDD/! p}
AAA
au lieu de AAA CCC
que j'aurais souhaité
Merci de votre aide,
B.
au lieu de
AAA
Hors ligne
#8 Le 05/08/2015, à 14:59
- credenhill
Re : ET et OU avec Stream Editor (SED)
comme ca ?
$ cat fichier
AAA
AAA BBB
AAA BBB CCC
AAA BBB CCC DDD
AAA BBB DDD
CCC DDD
EEE
$ sed -n '/AAA.*BBB\|BBB.*AAA/ {/CCC\|DDD/! p}' fichier
AAA BBB
Hors ligne