Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/02/2015, à 12:15

Le Goss

[Résolu] bash: supprimer lignes vides dans une partie d'un fichier

Bonjour à tous,

Je cherche à supprimer les lignes vides d'un fichier de la 1ere ligne jusqu'à une suite de mot
Je m'y prend peut-être comme un manche, mais voilà où j'en suis:

cat fichier | sed '1,/bla bla/!d' | sed '/^$/d'

C'est "bon" sur le terminal, mais je voudrais l'appliquer au fichier sans supprimer le reste de son contenu.

Merci pour votre aide
Cordialement

Dernière modification par Le Goss (Le 27/02/2015, à 13:18)


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#2 Le 27/02/2015, à 13:06

pingouinux

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

Bonjour,
Essaye ceci

sed '1,/bla bla/!b;/^$/d' fichier

Hors ligne

#3 Le 27/02/2015, à 13:18

Le Goss

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

Super! j'ai bien pensé à cette ligne... mais sans le !b
Merci à toi!


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#4 Le 27/02/2015, à 20:21

Hizoka

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

moi aussi je veux jouer tongue

STOP="False"

while read ligne
do
  if [[ "${STOP}" == "False" ]]
  then
    [[ $(grep "bla bla" <<< "${ligne}") ]] && STOP="True" 
    [[ "${ligne}" != "" ]] && echo "${ligne}" >> newfile.txt
  else
    echo "${ligne}" >> newfile.txt
  fi
done < fichier.txt

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 27/02/2015, à 20:46

pingouinux

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

@Hizoka : Ça marche aussi, mais tu peux simplifier un peu (au niveau de la variable STOP, du test avec grep, et de la redirection)

STOP=false

while read ligne
do
  if ! $STOP
  then
    grep -q "bla bla" <<< "${ligne}" && STOP=true         
    [[ "${ligne}" ]] && echo "${ligne}"
  else
    echo "${ligne}" 
  fi
done <fichier.txt >newfile.txt

Hors ligne

#6 Le 28/02/2015, à 00:57

Hizoka

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

pas trop fan pour le grep, je trouve ca moins lisible
pour la variable, c'est a cause de python, on ne peut pas faire ça (j'ai du changer mes habitudes)
pour la redirection, j'y pense jamais à le mettre dans la boucle wink

merci.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 28/02/2015, à 08:11

pingouinux

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

[HS]

Hizoka #6 a écrit :

pour la variable, c'est a cause de python, on ne peut pas faire ça

Je ne vois pas ce que tu veux dire. As-tu un exemple ?
[/HS]

Hors ligne

#8 Le 28/02/2015, à 11:54

Hizoka

Re : [Résolu] bash: supprimer lignes vides dans une partie d'un fichier

merde, j'ai mal lu... je pensais que tu n'avais pas initialisé la variable STOP, ce qui est possible en bash mais pas en python.

bash :

if [[ -n "${NEW_VAR}" ]]
then
  echo "NEW_VAR n'est pas vide"
else
  echo "NEW_VAR est vide"
fi

=>
NEW_VAR est vide

python :

if NEW_VAR == "":
  print("NEW_VAR n'est pas vide")
else:
  print("NEW_VAR est vide")

=>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'NEW_VAR' is not defined

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne