Supprimer des champs par lignes d'un fichier
fptv7514
-
fptv7514 -
fptv7514 -
Bonjour,
Script bash
je dois formater un fichier pour chaque lignes soient identiques en nombre de champs !!
En gros mon fichier toto.txt comporte 100 lignes et sur chaque ligne il y a de 10 à 12 champs séparé par des espaces.
Ce que je veux en retour c'est le meme fichier toto.txt avec des lignes de 10 champs !!
donc par exemple pour une ligne avec 12champs je veux supprimer le champs 5 et 6
pour une ligne avec 11 champs je veux supprimer le champs 5
pour une ligne avec 10 champs rien faire
Ex : fichier de départ :
toto1 toto2 toto3 toto4 toto5 toto6 toto7 toto8 toto9 toto10 toto11 toto12
tata1 tata2 tata3 tata4 tata5 tata6 tata7 tata8 tata9 tata10 tata11
titi1 titi2 titi3 titi4 titi5 titi6 titi7 titi8 titi9 titi10
fichier résultats:
toto1 toto2 toto3 toto4 toto7 toto8 toto9 toto10 toto11 toto12
tata1 tata2 tata3 tata4 tata6 tata7 tata8 tata9 tata10 tata11
titi1 titi2 titi3 titi4 titi5 titi6 titi7 titi8 titi9 titi10
Comme cela j'ai un fichier avec des lignes de 10 champs maxi.
Cordialement
Script bash
je dois formater un fichier pour chaque lignes soient identiques en nombre de champs !!
En gros mon fichier toto.txt comporte 100 lignes et sur chaque ligne il y a de 10 à 12 champs séparé par des espaces.
Ce que je veux en retour c'est le meme fichier toto.txt avec des lignes de 10 champs !!
donc par exemple pour une ligne avec 12champs je veux supprimer le champs 5 et 6
pour une ligne avec 11 champs je veux supprimer le champs 5
pour une ligne avec 10 champs rien faire
Ex : fichier de départ :
toto1 toto2 toto3 toto4 toto5 toto6 toto7 toto8 toto9 toto10 toto11 toto12
tata1 tata2 tata3 tata4 tata5 tata6 tata7 tata8 tata9 tata10 tata11
titi1 titi2 titi3 titi4 titi5 titi6 titi7 titi8 titi9 titi10
fichier résultats:
toto1 toto2 toto3 toto4 toto7 toto8 toto9 toto10 toto11 toto12
tata1 tata2 tata3 tata4 tata6 tata7 tata8 tata9 tata10 tata11
titi1 titi2 titi3 titi4 titi5 titi6 titi7 titi8 titi9 titi10
Comme cela j'ai un fichier avec des lignes de 10 champs maxi.
Cordialement
Configuration: Linux RHEL 5
A voir également:
- Supprimer des champs par lignes d'un fichier
- Supprimer rond bleu whatsapp - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Impossible de supprimer un fichier - Guide
- Comment ouvrir un fichier 7z - Guide
10 réponses
Salut,
Une idée avec sed...
Une idée avec sed...
[tmpfs]$ cat fichier dans un fichier je doit supprimer des lignes entières supprimer les lignes commençant par Block supprimer les lignes commençant par Statistics supprimer les lignes commençant par Total supprimer les lignes commençant par Entries supprimer les lignes commençant par Used supprimer les lignes commençant par Data supprimer les lignes vides supprimer les lignes avec que des moins : - - - - - - - - - - - mais tous collés les uns aux autres ------------- - - - - - - - - - - --------------------------------- -------- ----- - - - - ---------------- - Block blabla Statistics blabla Total blabla Entries blabla Used blabla Data blabla [tmpfs]$ sed '/^\(Block\|Statistics\|Total\|Entries\|Used\|Data\|-*$\)/d' fichier dans un fichier je doit supprimer des lignes entières supprimer les lignes commençant par Block supprimer les lignes commençant par Statistics supprimer les lignes commençant par Total supprimer les lignes commençant par Entries supprimer les lignes commençant par Used supprimer les lignes commençant par Data supprimer les lignes vides supprimer les lignes avec que des moins : - - - - - - - - - - - mais tous collés les uns aux autres ------------- - - - - - - - - - - -------- ----- - - - - ---------------- [tmpfs]$;-))
Salut,
En fait les lignes vident sont englobées dans "-*$" (le début "^" étant générique avec les parenthèses).
Le "-*" matchant la présence d'un tiret ou pas et dans le cas où il n'y en a pas, c'est alors considéré comme une ligne vide.
Je t'avoue que dans mon 1er jet de la syntaxe j'avais mis un "^$" suivi du "-*$"...
;-))
En fait les lignes vident sont englobées dans "-*$" (le début "^" étant générique avec les parenthèses).
Le "-*" matchant la présence d'un tiret ou pas et dans le cas où il n'y en a pas, c'est alors considéré comme une ligne vide.
Je t'avoue que dans mon 1er jet de la syntaxe j'avais mis un "^$" suivi du "-*$"...
;-))
Merci beaucoup cela marche nickel, j'avais corriger la petite erreur mais rien de grave !!
Par contre dans la meme idée :
dans un fichier je doit supprimer des lignes entières
supprimer les lignes commençant par Block
supprimer les lignes commençant par Statistics
supprimer les lignes commençant par Total
supprimer les lignes commençant par Entries
supprimer les lignes commençant par Used
supprimer les lignes commençant par Data
supprimer les lignes vides
supprimer les lignes avec que des moins : - - - - - - - - - - - mais tous collés les uns aux autres
Si possible tout en meme temps
Moi j'ai trouvé ça , mais j'arrive pas à faire tout ensemble.
awk ' $1!="Block" { print; } ' < fichier
Cordialement
Par contre dans la meme idée :
dans un fichier je doit supprimer des lignes entières
supprimer les lignes commençant par Block
supprimer les lignes commençant par Statistics
supprimer les lignes commençant par Total
supprimer les lignes commençant par Entries
supprimer les lignes commençant par Used
supprimer les lignes commençant par Data
supprimer les lignes vides
supprimer les lignes avec que des moins : - - - - - - - - - - - mais tous collés les uns aux autres
Si possible tout en meme temps
Moi j'ai trouvé ça , mais j'arrive pas à faire tout ensemble.
awk ' $1!="Block" { print; } ' < fichier
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Encore un grand merci !!!
dernière demande enfin je pense !!
Dans mon fichier j'ai des lignes commençant par *** blabla blabla blabla /blabla
je veux supprimer le début de la ligne jusqu 'au symbole /
Merci pour votre aide
dernière demande enfin je pense !!
Dans mon fichier j'ai des lignes commençant par *** blabla blabla blabla /blabla
je veux supprimer le début de la ligne jusqu 'au symbole /
Merci pour votre aide
j'ai des lignes commençant par *** blabla blabla blabla /blabla
Peux-tu être plus précis s'il te plaît ?
Elles commencent par "***" ?
Il y-a-t'il qu'un seul slash dans la ligne ?
Est-ce les seules lignes commençant par "***" ?
Un exemple précis et concret serait le bienvenu ;-)
Peux-tu être plus précis s'il te plaît ?
Elles commencent par "***" ?
Il y-a-t'il qu'un seul slash dans la ligne ?
Est-ce les seules lignes commençant par "***" ?
Un exemple précis et concret serait le bienvenu ;-)
Voici le type de ligne :
*** Report for user quotas on device /dev/sde1
*** Report for user quotas on device /dev/sdf1
moi je veux juste :
/dev/sde1
/dev/sdf1
Voila.
Merci
*** Report for user quotas on device /dev/sde1
*** Report for user quotas on device /dev/sdf1
moi je veux juste :
/dev/sde1
/dev/sdf1
Voila.
Merci