Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1870 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [shell][grep] détecter plusieurs nouvelles lignes.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell][grep] détecter plusieurs nouvelles lignes.

n°342946
duch
Posté le 22-10-2003 à 13:00:25  profilanswer
 

je suis une buse, je sais, mais c'est quoi la regex pour détecter plusieurs nouvelles lignes (plus de 2) avec grep?
 
j'ai essayé ça :
 

Code :
  1. grep ": +" monfichier


 
car il me semble que ': ' correspond à tous caractère de contrôle
mais ça ne marche pô vraiment :D de plus le + c'est à partir de 1 occurence et moi j'en veux 2

mood
Publicité
Posté le 22-10-2003 à 13:00:25  profilanswer
 

n°342952
Aragorn_1e​r
Le jihad butlérian est proche
Posté le 22-10-2003 à 13:08:07  profilanswer
 

Je n ai pas trop compris ce que tu voulais faire ... :??:
Tu veux comparer un fichier a un autre pour voir les lignes nouvelles ?
 
A+

n°342959
duch
Posté le 22-10-2003 à 13:17:06  profilanswer
 

non, non, je veux juste détecter les nouvelles lignes vides (new lines)
 
comme dans l'exemple suivant :
 

Code :
  1. texte
  2. re texte
  3. re re texte


 
j'aimerais pouvoir détecter les nouvelles lignes vide entre "texte" et "re texte" par exemple
 
c'est pour pouvoir faire un peu de nettoyage.
 
A moins qu'il y est une méthode pour supprimer les lignes vides superflues dans un fichier?

n°342961
Aragorn_1e​r
Le jihad butlérian est proche
Posté le 22-10-2003 à 13:18:20  profilanswer
 

Oui, cat toto | tr -s "\n"
 
A+

n°342962
bobuse
Posté le 22-10-2003 à 13:20:57  profilanswer
 

Aragorn_1er a écrit :

Oui, cat toto | tr -s "\n"
 
A+


 
oui, mais une ligne vide peut contenir des espaces ;)

n°342965
Aragorn_1e​r
Le jihad butlérian est proche
Posté le 22-10-2003 à 13:26:27  profilanswer
 

Il cherche la petite bete lui ! :lol:
Pour moi une ligne vide c'est ... une ligne vide !
 
A+

n°342966
bobuse
Posté le 22-10-2003 à 13:28:47  profilanswer
 

avec sed :

cat toto | sed '/^[[:space:]]*$/d'

n°342967
bobuse
Posté le 22-10-2003 à 13:29:21  profilanswer
 

Aragorn_1er a écrit :

Il cherche la petite bete lui ! :lol:
Pour moi une ligne vide c'est ... une ligne vide !
 
A+


vécu inside :o

n°342970
duch
Posté le 22-10-2003 à 13:33:32  profilanswer
 

en l'occurence la mienne n'en contients pas :D
 
par contre votre méthode vire toute ligne vide. Moi je voudrais laisser une ligne vide et virer les éventuelles lignes vides la suivant...


Message édité par duch le 22-10-2003 à 13:33:47
n°342971
bobuse
Posté le 22-10-2003 à 13:34:55  profilanswer
 

dans ce cas, awk est ton ami :)

mood
Publicité
Posté le 22-10-2003 à 13:34:55  profilanswer
 

n°342973
duch
Posté le 22-10-2003 à 13:38:56  profilanswer
 

Argg...
 
t'es sûr qu'avec grep c'est pô possible?
 
j'ai déjà utilisé grep pour supprimer certianes lignes spécifiques d'un fichier :
 
[cpp]grep --invert-match "$1" monfichier > monfichier[cpp]
 
en remplaçant "$1" par "plus de 2 lignes vides, mais efface pas la première", ça peut pas le faire?


Message édité par duch le 22-10-2003 à 13:40:16
n°342976
bobuse
Posté le 22-10-2003 à 13:42:56  profilanswer
 

cat toto | awk '/^[[:space:]]*$/{if(!blank_line) {blank_line=1; print $0;} next;}; //{print $0; blank_line=0;}'


 
version lisible :  

cat toto | awk '
/^[[:space:]]*$/ {
  if(!blank_line) {
    blank_line=1;
    print $0;
  }
  next;
};
// {
  print $0;
  blank_line=0;
}'


Message édité par bobuse le 22-10-2003 à 13:44:42
n°342977
duch
Posté le 22-10-2003 à 13:45:13  profilanswer
 

arg!!!
 
mais comment on peut penser à des trucs comme ça!!!

n°342978
bobuse
Posté le 22-10-2003 à 13:46:15  profilanswer
 

duch a écrit :

arg!!!
 
mais comment on peut penser à des trucs comme ça!!!


c'est la traduction awk de ton pb, c'est tout :/
 
c'est toi qui as de ces questions :pfff: :D


Message édité par bobuse le 22-10-2003 à 13:46:27
n°342988
duch
Posté le 22-10-2003 à 14:15:58  profilanswer
 

euh...
 
marche pô :(

n°342992
bobuse
Posté le 22-10-2003 à 14:33:23  profilanswer
 

duch a écrit :

euh...
 
marche pô :(


mais encore ...

n°342993
duch
Posté le 22-10-2003 à 14:34:57  profilanswer
 

bah en fait ça fait rien, le fichier reste inchangé, bizarre non?

n°342997
bobuse
Posté le 22-10-2003 à 14:53:13  profilanswer
 

pourrais-tu copier/coller la commande lancée, sinon je peux pas te dire grand chose ... :/

n°342999
duch
Posté le 22-10-2003 à 14:59:22  profilanswer
 

dans mon script je fais :
 

Code :
  1. cat monfichier | awk '/^[[:space:]]*$/{if(!blank_line) {blank_line=1; print $0;} next;}; //{print $0; blank_line=0;}' > autrefichier


 
et même en faisant simplement  
 

Code :
  1. cat monfichier | awk '/^[[:space:]]*$/{if(!blank_line) {blank_line=1; print $0;} next;}; //{print $0; blank_line=0;}'


 
la sortie contient toujours les lignes vides.


Message édité par duch le 22-10-2003 à 15:00:22
n°343002
bobuse
Posté le 22-10-2003 à 15:10:17  profilanswer
 

et il a quelle gueule ton fichier ?
essaie la commande en dehors de ton script ...
essaie avec un fichier créé pour l'occasion
 
en tout cas, chez moi ça marche !!
 
edit : t'es bien sous Linux ?


Message édité par bobuse le 22-10-2003 à 15:11:00
n°343004
duch
Posté le 22-10-2003 à 15:17:32  profilanswer
 

oui je suis bien sous linux
 
le fichier c'est mon fichier virtual (postfix), y'a des tab dedans
 
si je lance la commande en dehors du script ça fait pareil, les lignes vides y sont toujours.
 
Oui je suis bien sous linux (debian woody)
 
 
 
mais bon pour éviter de m(t)'emmerder, je suis en train d'essayer de plugger postfix à mysql, ça sera plus simple pour gérer les mails. Ca marche pô encore mais bon, ça vient :D


Message édité par duch le 22-10-2003 à 15:18:27
n°343006
bobuse
Posté le 22-10-2003 à 15:23:34  profilanswer
 

Sinon, essaye de remplacer [:space:] par [:blank:] :)
 
J'avais pas pensé aux tab :ange:

n°343007
duch
Posté le 22-10-2003 à 15:28:29  profilanswer
 

ok j'vais essayer, ça en attendant j'ai presque fini de plugger postfix à mysql.
 
J'ai encore un p'tit problème, dis tu l'aurais pas déjà fais par hasard? :D

n°343009
bobuse
Posté le 22-10-2003 à 15:31:14  profilanswer
 

nop

n°343011
duch
Posté le 22-10-2003 à 15:38:11  profilanswer
 

en fait j'ai le même problème que ce type là, qui a manfistement une solution, mais je ne la comprends pas.
 
Tu peux m'aider à traduire?
 
http://lists.debian.org/debian-fre [...] 01007.html
 
c'est quoi le répertoire de chroot?
 
oui je sais ça dérive...


Message édité par duch le 22-10-2003 à 15:38:44
n°343012
bobuse
Posté le 22-10-2003 à 15:40:58  profilanswer
 

change le titre de ton topic ;)
 
moi je peux plus grand chose http://forum.hardware.fr/icones/flagn1.gif

n°343013
duch
Posté le 22-10-2003 à 15:41:49  profilanswer
 

arf, je vais faire un autre topic sur le sujet...
 
merci encore

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [shell][grep] détecter plusieurs nouvelles lignes.

 

Sujets relatifs
[shell] comment creer un fichier sous unix avec son path??[shell] transformer un string en array...
[shell][awk] récupérer la valeur max d'une sortie?[shell] coment utiliser une variable dans un bloc << EOF ??
répartition de charge sur plusieurs lignes ADSLPrendre du courrier par POP3 et le distribuer à plusieurs utilisateurs
+ de 100mbits/s en utilisant plusieurs NIC?[ Shell/Bash ] Quelques commandes pour lancer une appli
Plusieurs questions a popos de BSD 
Plus de sujets relatifs à : [shell][grep] détecter plusieurs nouvelles lignes.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR