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

détecter plusieurs nouvelles lignes. [shell][grep] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 22-10-2003 à 13:00:25    

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

Reply

Marsh Posté le 22-10-2003 à 13:00:25   

Reply

Marsh Posté le 22-10-2003 à 13:08:07    

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+

Reply

Marsh Posté le 22-10-2003 à 13:17:06    

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?

Reply

Marsh Posté le 22-10-2003 à 13:18:20    

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

Reply

Marsh Posté le 22-10-2003 à 13:20:57    

Aragorn_1er a écrit :

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


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

Reply

Marsh Posté le 22-10-2003 à 13:26:27    

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

Reply

Marsh Posté le 22-10-2003 à 13:28:47    

avec sed :

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

Reply

Marsh Posté le 22-10-2003 à 13:29:21    

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

Reply

Marsh Posté le 22-10-2003 à 13:33:32    

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
Reply

Marsh Posté le 22-10-2003 à 13:34:55    

dans ce cas, awk est ton ami :)

Reply

Marsh Posté le 22-10-2003 à 13:34:55   

Reply

Marsh Posté le 22-10-2003 à 13:38:56    

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
Reply

Marsh Posté le 22-10-2003 à 13:42:56    

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
Reply

Marsh Posté le 22-10-2003 à 13:45:13    

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

Reply

Marsh Posté le 22-10-2003 à 13:46:15    

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
Reply

Marsh Posté le 22-10-2003 à 14:15:58    

euh...
 
marche pô :(

Reply

Marsh Posté le 22-10-2003 à 14:33:23    

duch a écrit :

euh...
 
marche pô :(


mais encore ...

Reply

Marsh Posté le 22-10-2003 à 14:34:57    

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

Reply

Marsh Posté le 22-10-2003 à 14:53:13    

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

Reply

Marsh Posté le 22-10-2003 à 14:59:22    

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
Reply

Marsh Posté le 22-10-2003 à 15:10:17    

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
Reply

Marsh Posté le 22-10-2003 à 15:17:32    

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
Reply

Marsh Posté le 22-10-2003 à 15:23:34    

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

Reply

Marsh Posté le 22-10-2003 à 15:28:29    

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

Reply

Marsh Posté le 22-10-2003 à 15:31:14    

nop

Reply

Marsh Posté le 22-10-2003 à 15:38:11    

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
Reply

Marsh Posté le 22-10-2003 à 15:40:58    

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

Reply

Marsh Posté le 22-10-2003 à 15:41:49    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed