Extraction de plusieurs lignes avec shell

anis_tel -  
 anis_tel -
salut a tous
je programme un script shell
et je voulai extraire plusieurs lignes successive
par exemple de ligne 22 à la ligne 29 d'un fichier de 44 lignes
merci de m'avoir aider
A voir également:

5 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
recuperer tout les lignes entre le debut et la fin
sed  -n '/^Cacert::/,/==$/p'
;-))
5
anis_tel
 
merci de m'aider
ca na pas marcher "recuperer tout les lignes entre le debut et la fin
sed -n '/^Cacert::/,/==$/p' "
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
merci une autre fois ;)

sed -n '$a,29p' fichier

elle ne donne pas de resultat

avec a=24 qui est un numeros d'une ligne extrait par : a=` cut -d: -f1 fich `

merci de m'aider
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
0
anis_tel
 
Salut merci de vos conseil

Je cherche a retarder l'execution d'une fonction sans que ça bloque
l'ensemble de mon script (comme le fait un sleep)?

Merci d'avance
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
sed -n '22,29p' fichier
,-))
0
anis_tel
 
merci pour votre aide

voila le fichier
::::::::::::::::::::::::::::::::::::::::::::::::::::
aazezer++ frezdsfggerghedtghghetyhy
tgergdfjotgerktlerotjhktgsrlkdgdlsfkg
gdsgs gdgdf ergerg greg gerghrtghrtth
gergdfgdfg rgertgdegde gergerger==
gdfgdgbvdfgbdfgdf,gdfgdfgdfgdf;gdf
::::::::::::::::::::::::::::::::::::::::::::::::::::::
je veux eliminer les caractere avant ++
puis mettre le résultat entre deux lignes d'un autre fichier
merci
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Re-

je veux eliminer les caractere avant ++
sed 's/.*++ //' fich > plop
puis mettre le résultat entre deux lignes d'un autre fichier
sed -i.bak '/motif/r plop' fichier
Ajoute le fichier "plop" (commande "r" pour "read") après la ligne contenant "motif" dans le fichier "fichier". L'option "-i.bak" crée une sauvegarde du fichier original.
0
anis_tel
 
mercie bien
le probleme rencontrer c'est que les lignes à extraire peut etre repeter dans le fichier mais il non pas le meme contenue malgré qu'il ont le meme debut (Cacert::)et la meme fin(==)
alors je veut recuperer tout les lignes entre le debut et la fin et les mettre chacun dans un fichier independant
*************************************************
Cacert:: jkyhniuybytbyutnuitynuy,iu,
,iuy,iuy,oiu;utgnrtbrtfrbtfr
uyntybyrbvtrbrt,i==
rtvetyvbuyniu,oiuiu
trbrtvrtcvrcr
Cacert:: yytyiuooiuoiu,oiopi,gnfff
dertvezrtvevtrte
revtrertevrterevr==
tyevrevretyrtv
****************************************
Mercie bien de m'aider
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut

pour sed -n '$a,29p' fichier

elle ne donne pas de resultat

essaie
lami20j@debian:~/trash$ cat fichier
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
ligne 7
ligne 8
ligne 9
ligne 10
lami20j@debian:~/trash$ echo $a
2
lami20j@debian:~/trash$  sed -n $a',5p' fichier
ligne 2
ligne 3
ligne 4
ligne 5
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Oui, ou encore avec des doubles quotes :
sed -n "$a,5p"
Merci lami20j ;-))
0
anis_tel > jipicy Messages postés 41342 Statut Modérateur
 
merci a tous

je veux parcourir un fichier FICH pour extraire les numéros des lignes
des meme phrases (XXX) cad :

****************************
FICH
XXXazozozpzozpopoapzopzopao <-------------
XXXauazoz,oiz,zoizomiomaoapap <--------------
oziozozizoaoizjhdhdhdj
djijkjhdhduizhdbh
XXXoieyfnyuieyrufy <----------------
********************************
et mettre ces numeros qui sont (1,2,5) chaqu'un dans un fichier

**************************************************
je veux connettre comment realiser un boucle dans un shell
exemple (algorithmique)

for i=(numeros ou caractere) to (numeros ou caractere)
do .........
********************
comment comparer le contenus de deux fichiers
********************
Merci a tous ;-(
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570 > anis_tel
 
Salut,

il y a des commandes pour faire ça
si tu veux apprendre des algorithme alors essaie de trouver un bon cours

dans ton cas tu peux faire une boucle que va incrementer un compteur

Voilà pour ton algo
i = 0
Tant qu'on n'est pas à la fin de fichier
   si la ligne commence avec XXX
     affiche " i+1 ligne"
   sinon
     affiche "ligne"
   On increment i (i = i + 1)
Fin Boucle

comment comparer le contenus de deux fichiers
man diff
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
ca na pas marcher "recuperer tout les lignes entre le debut et la fin
sed -n '/^Cacert::/,/==$/p' "


Ben, ça marche
Le problème ce n'est pas la commande mais les lignes ou plutôt le groupe des lignes (je ne peux pas dire paragraphe) ou la façon dont tu poses la question

la commande extrait tout entre
Cacert:: et ==
si tu regarde ton fichier tu as
Cacert:: jkyhniuybytbyutnuitynuy,iu,
,iuy,iuy,oiu;utgnrtbrtfrbtfr
uyntybyrbvtrbrt,i==
rtvetyvbuyniu,oiuiu
trbrtvrtcvrcr
Cacert:: yytyiuooiuoiu,oiopi,gnfff
dertvezrtvevtrte
revtrertevrterevr==
tyevrevretyrtv 
donc le résultat est correct
lami20j@debian:~/trash$ cat fichier
Cacert:: jkyhniuybytbyutnuitynuy,iu,
,iuy,iuy,oiu;utgnrtbrtfrbtfr
uyntybyrbvtrbrt,i==
rtvetyvbuyniu,oiuiu
trbrtvrtcvrcr
Cacert:: yytyiuooiuoiu,oiopi,gnfff
dertvezrtvevtrte
revtrertevrterevr==
tyevrevretyrtv
lami20j@debian:~/trash$ sed -n '/^Cacert::/,/==$/p' fichier
Cacert:: jkyhniuybytbyutnuitynuy,iu,
,iuy,iuy,oiu;utgnrtbrtfrbtfr
uyntybyrbvtrbrt,i==
Cacert:: yytyiuooiuoiu,oiopi,gnfff
dertvezrtvevtrte
revtrertevrterevr==

0