Awk help
Résolu/Fermé
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
-
9 août 2014 à 20:23
new_26 Messages postés 15 Date d'inscription samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015 - 10 août 2014 à 11:28
new_26 Messages postés 15 Date d'inscription samedi 9 août 2014 Statut Membre Dernière intervention 14 septembre 2015 - 10 août 2014 à 11:28
A voir également:
- Awk help
- DNS_PROBE_FINISHED_NXDOMAIN : dnsapi.dll (Win32:Patched-AWK) ✓ - Forum Virus
- Supprimer des lignes avec awk ou sed ✓ - Forum Shell
- Fonctionnement de foreach et awk et set ✓ - Forum Shell
- Commande bash awk, comment mettre en variables. ✓ - Forum Linux / Unix
- Commande équivalent à Sed, awk, tail,head en powershell ! - Forum Shell
4 réponses
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
9 août 2014 à 20:24
9 août 2014 à 20:24
une complication: les fa_alignement peuvent être identiques pour deux gene différents!
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
Modifié par zipe31 le 9/08/2014 à 20:39
Modifié par zipe31 le 9/08/2014 à 20:39
Salut,
Une solution avec sed :
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
Une solution avec sed :
$ cat plop
gene_1
gene_2
gene_3
gene_4
fa_alignement1
gene_5
gene_6
fa_alignement2
gene_7
...
$ sed -n 'N;/\nfa_alignement/!{D};s/\n/ /p' plop
gene_4 fa_alignement1
gene_6 fa_alignement2
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
9 août 2014 à 21:21
9 août 2014 à 21:21
merci zipe31,
pourriez-vous détailler les expressions s'il vous plaît?
ça ne fonctionne pas mais je soupçonne que c'est parce que la ligne contenant fa_alignement ne commence pas par fa_alignement.
fa_alignement se trouve dans la colonne 9 des lignes suivant gene_4 et gene_7.
De plus, plusieurs lignes comportant fa_alignement peuvent se suivre après gene_4 et j'aimerai toutes les garder.
Désolée de ne pas avoir été assez précise!
pourriez-vous détailler les expressions s'il vous plaît?
ça ne fonctionne pas mais je soupçonne que c'est parce que la ligne contenant fa_alignement ne commence pas par fa_alignement.
fa_alignement se trouve dans la colonne 9 des lignes suivant gene_4 et gene_7.
De plus, plusieurs lignes comportant fa_alignement peuvent se suivre après gene_4 et j'aimerai toutes les garder.
Désolée de ne pas avoir été assez précise!
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
10 août 2014 à 08:57
10 août 2014 à 08:57
hello
avec awk et les données fournies
avec awk et les données fournies
$ awk '{t[NR]=$0} /fa_alignement/ {print t[NR-1], $0}' fichier
gene_4 fa_alignement1
gene_6 fa_alignement2
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 août 2014 à 09:25
10 août 2014 à 09:25
Re-
Tant que tu ne nous donneras pas des exemples CONCRETS et EXACTS, ne ne pourrons te donner que des solutions approximatives ;-(
En partant de tes dernières infos...
Si ça colle, j'expliquerais la syntaxe, sinon faudra nous donner de meilleurs exemples ;-(
Tant que tu ne nous donneras pas des exemples CONCRETS et EXACTS, ne ne pourrons te donner que des solutions approximatives ;-(
En partant de tes dernières infos...
$ cat plop
gene_1
gene_2
gene_3
gene_4
bla bla fa_alignement1 blabla
gene_5
gene_6
bla fa_alignement2 blabla
gene_7
gene_8
gene_9
gene_10
gene_11
bla bla fa_alignement3 blabla
bla fa_alignement3a blabla
bla bla fa_alignement3b blabla
gene_12
gene_13
bla fa_alignement4 blabla
bla bla fa_alignement4a blabla
gene_14
$ sed -n 'N;/\n.*fa_alignement/!{D};:z;s/\n/ /;N;/\n.*fa_alignement/bz;P;D' plop
gene_4 bla bla fa_alignement1 blabla
gene_6 bla fa_alignement2 blabla
gene_11 bla bla fa_alignement3 blabla bla fa_alignement3a blabla bla bla fa_alignement3b blabla
gene_13 bla fa_alignement4 blabla bla bla fa_alignement4a blabla
Si ça colle, j'expliquerais la syntaxe, sinon faudra nous donner de meilleurs exemples ;-(
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
10 août 2014 à 09:54
10 août 2014 à 09:54
bonjour,
merci mais non ça ne fonctionne pas :/
voici la tête de mon fichier:
Query: gene_1|GeneMark.hmm|491_aa|+|1|1476 [L=491]
Query: gene_2|GeneMark.hmm|399_aa|+|2169|3368 [L=399]
Query: gene_3|GeneMark.hmm|297_aa|+|3419|4312 [L=297]
Query: gene_4|GeneMark.hmm|401_aa|+|4275|5480 [L=401]
Query: gene_5|GeneMark.hmm|183_aa|+|5473|6024 [L=183]
Query: gene_6|GeneMark.hmm|675_aa|+|6249|8276 [L=675]
Query: gene_7|GeneMark.hmm|403_aa|+|8409|9620 [L=403]
4.6e-06 16.6 0.3 2.5e-05 14.3 0.1 2.3 2 fa_alignment_TIGR03930
Query: gene_8|GeneMark.hmm|75_aa|+|9620|9847 [L=75]
Query: gene_9|GeneMark.hmm|94_aa|+|10152|10436 [L=94]
Query: gene_10|GeneMark.hmm|404_aa|-|10485|11699 [L=404]
Query: gene_11|GeneMark.hmm|130_aa|-|11717|12109 [L=130]
Query: gene_12|GeneMark.hmm|172_aa|-|12325|12843 [L=172]
Query: gene_13|GeneMark.hmm|34_aa|-|12884|12988 [L=34]
Query: gene_20|GeneMark.hmm|844_aa|+|18374|20908 [L=844]
Query: gene_21|GeneMark.hmm|297_aa|+|20967|21860 [L=297]
Query: gene_22|GeneMark.hmm|423_aa|-|22158|23429 [L=423]
Query: gene_23|GeneMark.hmm|305_aa|+|23501|24418 [L=305]
Query: gene_24|GeneMark.hmm|134_aa|-|24439|24843 [L=134]
Query: gene_25|GeneMark.hmm|197_aa|+|24946|25539 [L=197]
Query: gene_26|GeneMark.hmm|252_aa|+|25651|26409 [L=252]
Query: gene_27|GeneMark.hmm|299_aa|-|26466|27365 [L=299]
Query: gene_1887|GeneMark.hmm|183_aa|+|1884131|1884682 [L=183]
1.2e-05 15.4 1.6 1.9e-05 14.7 1.6 1.3 1 fa_alignment_TIGR03931
Query: gene_1888|GeneMark.hmm|141_aa|+|1884774|1885199 [L=141]
Query: gene_1889|GeneMark.hmm|153_aa|+|1885231|1885692 [L=153]
Query: gene_1890|GeneMark.hmm|147_aa|+|1885923|1886366 [L=147]
Query: gene_1891|GeneMark.hmm|400_aa|+|1886592|1887794 [L=400]
Query: gene_1892|GeneMark.hmm|114_aa|-|1887842|1888186 [L=114]
Query: gene_1893|GeneMark.hmm|246_aa|+|1888779|1889519 [L=246]
Query: gene_1894|GeneMark.hmm|380_aa|+|1889651|1890793 [L=380]
Query: gene_1895|GeneMark.hmm|207_aa|+|1890891|1891514 [L=207]
Query: gene_1896|GeneMark.hmm|352_aa|-|1891504|1892562 [L=352]
Query: gene_1897|GeneMark.hmm|455_aa|-|1892574|1893941 [L=455]
7.9e-06 15.8 0.4 7.9e-06 15.8 0.4 2.2 2 fa_alignment_TIGR03930
Query: gene_1898|GeneMark.hmm|122_aa|-|1894578|1894946 [L=122]
Query: gene_1899|GeneMark.hmm|336_aa|-|1895066|1896076 [L=336]
Query: gene_1900|GeneMark.hmm|306_aa|+|1896259|1897179 [L=306]
Query: gene_1901|GeneMark.hmm|271_aa|-|1897164|1897979 [L=271]
Query: gene_1902|GeneMark.hmm|162_aa|-|1897979|1898467 [L=162]
Query: gene_1903|GeneMark.hmm|216_aa|-|1898460|1899110 [L=216]
Query: gene_1904|GeneMark.hmm|339_aa|+|1899145|1900164 [L=339]
Query: gene_1905|GeneMark.hmm|379_aa|+|1900164|1901303 [L=379]
Query: gene_1906|GeneMark.hmm|229_aa|+|1901333|1902022 [L=229]
9.1e-05 12.1 4.8 0.00014 11.5 4.8 1.4 1 fa_alignment_TIGR03927
Query: gene_1907|GeneMark.hmm|375_aa|+|1901995|1903122 [L=375]
Query: gene_1908|GeneMark.hmm|267_aa|+|1903132|1903935 [L=267]
Query: gene_1909|GeneMark.hmm|398_aa|+|1904060|1905256 [L=398]
Query: gene_1910|GeneMark.hmm|148_aa|-|1905226|1905672 [L=148]
Query: gene_1911|GeneMark.hmm|409_aa|-|1905669|1906898 [L=409]
Query: gene_1912|GeneMark.hmm|320_aa|-|1906895|1907857 [L=320]
Query: gene_1913|GeneMark.hmm|161_aa|-|1907854|1908339 [L=161]
Query: gene_1529|GeneMark.hmm|157_aa|-|1549490|1549963 [L=157]
Query: gene_1530|GeneMark.hmm|380_aa|+|1550469|1551611 [L=380]
Query: gene_1531|GeneMark.hmm|295_aa|-|1551681|1552568 [L=295]
Query: gene_1532|GeneMark.hmm|246_aa|-|1553214|1553954 [L=246]
Query: gene_1533|GeneMark.hmm|510_aa|+|1553962|1555494 [L=510]
2.7e-05 12.7 0.3 0.00013 10.4 0.2 1.9 2 fa_alignment_TIGR03924
4.9e-05 11.6 0.2 7.6e-05 11.0 0.2 1.2 1 fa_alignment_TIGR03922
7.3e-05 10.1 0.3 0.00019 8.7 0.1 1.6 2 fa_alignment_TIGR03928
Query: gene_1534|GeneMark.hmm|316_aa|-|1555533|1556483 [L=316]
Query: gene_1535|GeneMark.hmm|214_aa|+|1556643|1557287 [L=214]
Query: gene_1536|GeneMark.hmm|267_aa|-|1557266|1558069 [L=267]
Query: gene_1537|GeneMark.hmm|439_aa|+|1558180|1559499 [L=439]
Query: gene_1538|GeneMark.hmm|247_aa|-|1559496|1560239 [L=247]
Query: gene_1539|GeneMark.hmm|455_aa|+|1560375|1561742 [L=455]
Query: gene_1540|GeneMark.hmm|312_aa|+|1561897|1562835 [L=312]
Query: gene_1541|GeneMark.hmm|635_aa|-|1562840|1564747 [L=635]
Query: gene_1542|GeneMark.hmm|105_aa|+|1564857|1565174 [L=105]
Query: gene_1543|GeneMark.hmm|625_aa|-|1565197|1567074 [L=625]
merci mais non ça ne fonctionne pas :/
voici la tête de mon fichier:
Query: gene_1|GeneMark.hmm|491_aa|+|1|1476 [L=491]
Query: gene_2|GeneMark.hmm|399_aa|+|2169|3368 [L=399]
Query: gene_3|GeneMark.hmm|297_aa|+|3419|4312 [L=297]
Query: gene_4|GeneMark.hmm|401_aa|+|4275|5480 [L=401]
Query: gene_5|GeneMark.hmm|183_aa|+|5473|6024 [L=183]
Query: gene_6|GeneMark.hmm|675_aa|+|6249|8276 [L=675]
Query: gene_7|GeneMark.hmm|403_aa|+|8409|9620 [L=403]
4.6e-06 16.6 0.3 2.5e-05 14.3 0.1 2.3 2 fa_alignment_TIGR03930
Query: gene_8|GeneMark.hmm|75_aa|+|9620|9847 [L=75]
Query: gene_9|GeneMark.hmm|94_aa|+|10152|10436 [L=94]
Query: gene_10|GeneMark.hmm|404_aa|-|10485|11699 [L=404]
Query: gene_11|GeneMark.hmm|130_aa|-|11717|12109 [L=130]
Query: gene_12|GeneMark.hmm|172_aa|-|12325|12843 [L=172]
Query: gene_13|GeneMark.hmm|34_aa|-|12884|12988 [L=34]
Query: gene_20|GeneMark.hmm|844_aa|+|18374|20908 [L=844]
Query: gene_21|GeneMark.hmm|297_aa|+|20967|21860 [L=297]
Query: gene_22|GeneMark.hmm|423_aa|-|22158|23429 [L=423]
Query: gene_23|GeneMark.hmm|305_aa|+|23501|24418 [L=305]
Query: gene_24|GeneMark.hmm|134_aa|-|24439|24843 [L=134]
Query: gene_25|GeneMark.hmm|197_aa|+|24946|25539 [L=197]
Query: gene_26|GeneMark.hmm|252_aa|+|25651|26409 [L=252]
Query: gene_27|GeneMark.hmm|299_aa|-|26466|27365 [L=299]
Query: gene_1887|GeneMark.hmm|183_aa|+|1884131|1884682 [L=183]
1.2e-05 15.4 1.6 1.9e-05 14.7 1.6 1.3 1 fa_alignment_TIGR03931
Query: gene_1888|GeneMark.hmm|141_aa|+|1884774|1885199 [L=141]
Query: gene_1889|GeneMark.hmm|153_aa|+|1885231|1885692 [L=153]
Query: gene_1890|GeneMark.hmm|147_aa|+|1885923|1886366 [L=147]
Query: gene_1891|GeneMark.hmm|400_aa|+|1886592|1887794 [L=400]
Query: gene_1892|GeneMark.hmm|114_aa|-|1887842|1888186 [L=114]
Query: gene_1893|GeneMark.hmm|246_aa|+|1888779|1889519 [L=246]
Query: gene_1894|GeneMark.hmm|380_aa|+|1889651|1890793 [L=380]
Query: gene_1895|GeneMark.hmm|207_aa|+|1890891|1891514 [L=207]
Query: gene_1896|GeneMark.hmm|352_aa|-|1891504|1892562 [L=352]
Query: gene_1897|GeneMark.hmm|455_aa|-|1892574|1893941 [L=455]
7.9e-06 15.8 0.4 7.9e-06 15.8 0.4 2.2 2 fa_alignment_TIGR03930
Query: gene_1898|GeneMark.hmm|122_aa|-|1894578|1894946 [L=122]
Query: gene_1899|GeneMark.hmm|336_aa|-|1895066|1896076 [L=336]
Query: gene_1900|GeneMark.hmm|306_aa|+|1896259|1897179 [L=306]
Query: gene_1901|GeneMark.hmm|271_aa|-|1897164|1897979 [L=271]
Query: gene_1902|GeneMark.hmm|162_aa|-|1897979|1898467 [L=162]
Query: gene_1903|GeneMark.hmm|216_aa|-|1898460|1899110 [L=216]
Query: gene_1904|GeneMark.hmm|339_aa|+|1899145|1900164 [L=339]
Query: gene_1905|GeneMark.hmm|379_aa|+|1900164|1901303 [L=379]
Query: gene_1906|GeneMark.hmm|229_aa|+|1901333|1902022 [L=229]
9.1e-05 12.1 4.8 0.00014 11.5 4.8 1.4 1 fa_alignment_TIGR03927
Query: gene_1907|GeneMark.hmm|375_aa|+|1901995|1903122 [L=375]
Query: gene_1908|GeneMark.hmm|267_aa|+|1903132|1903935 [L=267]
Query: gene_1909|GeneMark.hmm|398_aa|+|1904060|1905256 [L=398]
Query: gene_1910|GeneMark.hmm|148_aa|-|1905226|1905672 [L=148]
Query: gene_1911|GeneMark.hmm|409_aa|-|1905669|1906898 [L=409]
Query: gene_1912|GeneMark.hmm|320_aa|-|1906895|1907857 [L=320]
Query: gene_1913|GeneMark.hmm|161_aa|-|1907854|1908339 [L=161]
Query: gene_1529|GeneMark.hmm|157_aa|-|1549490|1549963 [L=157]
Query: gene_1530|GeneMark.hmm|380_aa|+|1550469|1551611 [L=380]
Query: gene_1531|GeneMark.hmm|295_aa|-|1551681|1552568 [L=295]
Query: gene_1532|GeneMark.hmm|246_aa|-|1553214|1553954 [L=246]
Query: gene_1533|GeneMark.hmm|510_aa|+|1553962|1555494 [L=510]
2.7e-05 12.7 0.3 0.00013 10.4 0.2 1.9 2 fa_alignment_TIGR03924
4.9e-05 11.6 0.2 7.6e-05 11.0 0.2 1.2 1 fa_alignment_TIGR03922
7.3e-05 10.1 0.3 0.00019 8.7 0.1 1.6 2 fa_alignment_TIGR03928
Query: gene_1534|GeneMark.hmm|316_aa|-|1555533|1556483 [L=316]
Query: gene_1535|GeneMark.hmm|214_aa|+|1556643|1557287 [L=214]
Query: gene_1536|GeneMark.hmm|267_aa|-|1557266|1558069 [L=267]
Query: gene_1537|GeneMark.hmm|439_aa|+|1558180|1559499 [L=439]
Query: gene_1538|GeneMark.hmm|247_aa|-|1559496|1560239 [L=247]
Query: gene_1539|GeneMark.hmm|455_aa|+|1560375|1561742 [L=455]
Query: gene_1540|GeneMark.hmm|312_aa|+|1561897|1562835 [L=312]
Query: gene_1541|GeneMark.hmm|635_aa|-|1562840|1564747 [L=635]
Query: gene_1542|GeneMark.hmm|105_aa|+|1564857|1565174 [L=105]
Query: gene_1543|GeneMark.hmm|625_aa|-|1565197|1567074 [L=625]
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 août 2014 à 10:00
10 août 2014 à 10:00
Normal, dans ton exemple c'est alignEment et là c'est sans E (alignment) ;-((
Après correction et sur le vrai fichier :
Après correction et sur le vrai fichier :
sed -n 'N;/\n.*fa_alignment/!{D};:z;s/\n/ /;N;/\n.*fa_alignment/bz;P;D' brol
Query: gene_7|GeneMark.hmm|403_aa|+|8409|9620 [L=403] 4.6e-06 16.6 0.3 2.5e-05 14.3 0.1 2.3 2 fa_alignment_TIGR03930
Query: gene_1887|GeneMark.hmm|183_aa|+|1884131|1884682 [L=183] 1.2e-05 15.4 1.6 1.9e-05 14.7 1.6 1.3 1 fa_alignment_TIGR03931
Query: gene_1897|GeneMark.hmm|455_aa|-|1892574|1893941 [L=455] 7.9e-06 15.8 0.4 7.9e-06 15.8 0.4 2.2 2 fa_alignment_TIGR03930
Query: gene_1906|GeneMark.hmm|229_aa|+|1901333|1902022 [L=229] 9.1e-05 12.1 4.8 0.00014 11.5 4.8 1.4 1 fa_alignment_TIGR03927
Query: gene_1533|GeneMark.hmm|510_aa|+|1553962|1555494 [L=510] 2.7e-05 12.7 0.3 0.00013 10.4 0.2 1.9 2 fa_alignment_TIGR03924 4.9e-05 11.6 0.2 7.6e-05 11.0 0.2 1.2 1 fa_alignment_TIGR03922 7.3e-05 10.1 0.3 0.00019 8.7 0.1 1.6 2 fa_alignment_TIGR03928
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
10 août 2014 à 10:03
10 août 2014 à 10:03
ah oui :/ je suis désolée de l'erreur!
ça fonctionne!!! MERCI
pourriez-vous m'expliquer la syntaxe, s'il vous plait?
ça fonctionne!!! MERCI
pourriez-vous m'expliquer la syntaxe, s'il vous plait?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
10 août 2014 à 10:17
10 août 2014 à 10:17
$ cat script.sed
#n
N
/\n.*fa_alignment/ !{
D
}
:z
s/\n/ /
N
/\n.*fa_alignment/ b z
P
D
Pour une meilleure compréhension, j'ai mis les commandes dans un fichier (script.sed) et que l'on peut appeler comme suit
sed -f script.sed fichier_à_traiter
Les explications :
#nOn imprime sur la sortie standard que sur demande (commande "p" ou "P")
NOn ajoute la ligne suivante dans la mémoire principale
/\n.*fa_alignment/ !{Si le motif (caractère saut de ligne + fa_alignment) n'est pas trouvé (le ! représente la négation), on applique la ou les commandes entre les accolades
DOn efface tout ce qui se trouve avant le caractère saut de ligne et on repart en début de script (en fait ici comme il n'y a pas de \n, on efface le buffer)
}Fin des commandes ne concernant pas le motif.
Si le motif est trouvé, on applique les commandes suivantes...
:zOn pose une étiquette (pour s'y brancher dessus plus loin selon une condition)
s/\n/ /On substitue le saut de ligne par un espace
NOn ajoute la ligne suivante dans la mémoire principale
/\n.*fa_alignment/ b zSi le motif est trouvé, on se branche (commande "b") à l'étiquette ("z") et on recommence
PSi le moti n'est pas trouvé, on imprime sur la sortie standard tout ce qui se trouve avant le 1er caractère saut de ligne
DPuis on efface tout ce qui se trouve avant le caractère saut de ligne et on repart en début de script
new_26
Messages postés
15
Date d'inscription
samedi 9 août 2014
Statut
Membre
Dernière intervention
14 septembre 2015
10 août 2014 à 11:28
10 août 2014 à 11:28
merci beaucoup!