J'ai un fichier contenant des lignes mal formattées.
Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup
d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une
commande sed:
sed s/reference:\ \"\(.*\)\"/reference:\ \1/ file
avec l'idée de dire: je cherche le motif
reference: "quelconque" pour réécrire reference: quelconque mais
cela ne fonctionne pas. Ou est-ce que je me trompe?
(Système linux)
Merci
--
Kevin
J'ai un fichier contenant des lignes mal formattées. Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif reference: "quelconque" pour réécrire reference: quelconque mais cela ne fonctionne pas. Ou est-ce que je me trompe? (Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse. Merci -- Kevin
Le 06-02-2013, Kevin Denis <kevin@nowhere.invalid> a écrit :
J'ai un fichier contenant des lignes mal formattées.
Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup
d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une
commande sed:
sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif
reference: "quelconque" pour réécrire reference: quelconque mais
cela ne fonctionne pas. Ou est-ce que je me trompe?
(Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut
prendre le problème différemment:
sed /reference/s/"//g file
fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode
ne fonctionne pas, ça m'intéresse.
Merci
--
Kevin
J'ai un fichier contenant des lignes mal formattées. Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif reference: "quelconque" pour réécrire reference: quelconque mais cela ne fonctionne pas. Ou est-ce que je me trompe? (Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse. Merci -- Kevin
Lucas Levrel
Le 6 février 2013, Kevin Denis a écrit :
Le 06-02-2013, Kevin Denis a écrit :
J'ai un fichier contenant des lignes mal formattées. Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif reference: "quelconque" pour réécrire reference: quelconque mais cela ne fonctionne pas. Ou est-ce que je me trompe? (Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif : sed 's/reference: "(.*)"/reference: 1/' file
Pour voir, fait echo s/reference: "(.*)"/reference: 1/
-- LL
Le 6 février 2013, Kevin Denis a écrit :
Le 06-02-2013, Kevin Denis <kevin@nowhere.invalid> a écrit :
J'ai un fichier contenant des lignes mal formattées.
Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup
d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une
commande sed:
sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif
reference: "quelconque" pour réécrire reference: quelconque mais
cela ne fonctionne pas. Ou est-ce que je me trompe?
(Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut
prendre le problème différemment:
sed /reference/s/"//g file
fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode
ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le
shell de modifier le motif :
sed 's/reference: "(.*)"/reference: 1/' file
Pour voir, fait
echo s/reference: "(.*)"/reference: 1/
J'ai un fichier contenant des lignes mal formattées. Ces lignes sont de la forme:
reference: "URL";
au lieu de
reference: URL;
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
avec l'idée de dire: je cherche le motif reference: "quelconque" pour réécrire reference: quelconque mais cela ne fonctionne pas. Ou est-ce que je me trompe? (Système linux)
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif : sed 's/reference: "(.*)"/reference: 1/' file
Pour voir, fait echo s/reference: "(.*)"/reference: 1/
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première mé thode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêche r le shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes, ça aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Le 06/02/2013 12:23, Lucas Levrel a écrit :
Le 6 février 2013, Kevin Denis a écrit :
<snip>
C'est toujours après avoir posté qu'on trouve la solution, il faut
prendre le problème différemment:
sed /reference/s/"//g file
fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première mé thode
ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêche r le
shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes,
ça aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première mé thode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêche r le shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes, ça aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Lucas Levrel
Le 6 février 2013, Cyrille Lefevre a écrit :
Le 06/02/2013 12:23, Lucas Levrel a écrit :
Le 6 février 2013, Kevin Denis a écrit :
<snip>
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes, ça aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Je parlais bien sûr du premier motif, celui qui ne fonctionne pas et qui contient notamment une *. C'était parfaitement clair d'après la portion de mon message que tu as coupée.
-- LL
Le 6 février 2013, Cyrille Lefevre a écrit :
Le 06/02/2013 12:23, Lucas Levrel a écrit :
Le 6 février 2013, Kevin Denis a écrit :
<snip>
C'est toujours après avoir posté qu'on trouve la solution, il faut
prendre le problème différemment:
sed /reference/s/"//g file
fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode
ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le
shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes, ça
aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Je parlais bien sûr du premier motif, celui qui ne fonctionne pas et qui
contient notamment une *. C'était parfaitement clair d'après la portion de
mon message que tu as coupée.
C'est toujours après avoir posté qu'on trouve la solution, il faut prendre le problème différemment: sed /reference/s/"//g file fait bien l'affaire. Mais si quelqu'un sait pourquoi ma première méthode ne fonctionne pas, ça m'intéresse.
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif :
perdu, sa phrase fonctionne très bien, s'il avait mis des apostrophes, ça aurai donné qqc comme : sed '/reference/s/"//g' tout simplement.
Je parlais bien sûr du premier motif, celui qui ne fonctionne pas et qui contient notamment une *. C'était parfaitement clair d'après la portion de mon message que tu as coupée.
-- LL
Kevin Denis
Le 06-02-2013, Lucas Levrel a écrit :
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif : sed 's/reference: "(.*)"/reference: 1/' file
Effectivement, avec les apostrophes, ça passe aussi. Merci -- Kevin
Le 06-02-2013, Lucas Levrel <lucas.levrel@u-pec.fr> a écrit :
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le
shell de modifier le motif :
sed 's/reference: "(.*)"/reference: 1/' file
Effectivement, avec les apostrophes, ça passe aussi.
Merci
--
Kevin
Pas testé, mais à mon avis il manque les apostrophes pour empêcher le shell de modifier le motif : sed 's/reference: "(.*)"/reference: 1/' file
Effectivement, avec les apostrophes, ça passe aussi. Merci -- Kevin
Kevin Denis
Le 06-02-2013, Jérémie Courrèges-Anglas <jca+ a écrit :
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
Ça manque de quotes. Dans cette expression les parenthèses seront vues commes littérales par sed, et « 1 » sera vu comme « 1 ».
sed 's/(reference: )"(.*)"/12/'
Ok, merci.
Après, ceci sous-entend qu'une url ne peut pas contenir de « " » échappé (tu n'as pas précisé le format exact de l'url) et qu'il n'y a pas d'autre « " » après la chaîne « reference: "URL" »
Ce qui est le cas.
Avertissement sans frais : la prochaine fois merci de spécifier la version de sed (GNU ?), le shell utilisé s'il n'est pas de type bourne, ainsi que??? le message d'erreur. ;)
système linux, donc 99.9% de chance que ce soit le GNU sed avec un bash :)
Sinon, le plus simple est souvent de s'arranger pour que les données soient directement formattées correctement, sans avoir à repasser derrière ton outil.
Données rentrées manuellement par plusieurs contributeurs.. -- Kevin
Le 06-02-2013, Jérémie Courrèges-Anglas <jca+news@wxcvbn.morg> a écrit :
Il y a des lignes 'reference' bien formattées. Il y a beaucoup
d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une
commande sed:
sed s/reference: "(.*)"/reference: 1/ file
Ça manque de quotes. Dans cette expression les parenthèses seront vues
commes littérales par sed, et « 1 » sera vu comme « 1 ».
sed 's/(reference: )"(.*)"/12/'
Ok, merci.
Après, ceci sous-entend qu'une url ne peut pas contenir de « " » échappé
(tu n'as pas précisé le format exact de l'url) et qu'il n'y a pas
d'autre « " » après la chaîne « reference: "URL" »
Ce qui est le cas.
Avertissement sans frais : la prochaine fois merci de spécifier la
version de sed (GNU ?), le shell utilisé s'il n'est pas de type bourne,
ainsi que??? le message d'erreur. ;)
système linux, donc 99.9% de chance que ce soit le GNU sed avec un bash :)
Sinon, le plus simple est souvent de s'arranger pour que les données
soient directement formattées correctement, sans avoir à repasser
derrière ton outil.
Données rentrées manuellement par plusieurs contributeurs..
--
Kevin
Le 06-02-2013, Jérémie Courrèges-Anglas <jca+ a écrit :
Il y a des lignes 'reference' bien formattées. Il y a beaucoup d'autres lignes qui n'ont pas à être modifiées. J'ai donc essayé une commande sed: sed s/reference: "(.*)"/reference: 1/ file
Ça manque de quotes. Dans cette expression les parenthèses seront vues commes littérales par sed, et « 1 » sera vu comme « 1 ».
sed 's/(reference: )"(.*)"/12/'
Ok, merci.
Après, ceci sous-entend qu'une url ne peut pas contenir de « " » échappé (tu n'as pas précisé le format exact de l'url) et qu'il n'y a pas d'autre « " » après la chaîne « reference: "URL" »
Ce qui est le cas.
Avertissement sans frais : la prochaine fois merci de spécifier la version de sed (GNU ?), le shell utilisé s'il n'est pas de type bourne, ainsi que??? le message d'erreur. ;)
système linux, donc 99.9% de chance que ce soit le GNU sed avec un bash :)
Sinon, le plus simple est souvent de s'arranger pour que les données soient directement formattées correctement, sans avoir à repasser derrière ton outil.
Données rentrées manuellement par plusieurs contributeurs.. -- Kevin
On 2013-02-06, Kevin Denis wrote: [probleme sur sed]
Moi aussi j'utilise souvent sed mais aussi awk et tout ca ... Mais une question me vient a l'esprit. Ne faut il pas mieux chercher une solution autour de python ?
Na, c est pas un troll. A une epoque je cherchais a resoudre ce genre de probleme avec perl. Mais plus tard quand je reprenais un script perl, je me rends compte qu'il faut que je reapprenne a nouveau perl (n'utilisant pas tous les jours).
Du coup, pour faire des choses un peu poussé (c'est à dire utilisation de sed/grep/cut/paste) ne vaut il pas mieux passer par du python qui est plus lisible que le perl ?
(vraie question)
On 2013-02-06, Kevin Denis <kevin@nowhere.invalid> wrote:
[probleme sur sed]
Moi aussi j'utilise souvent sed mais aussi awk et tout ca ...
Mais une question me vient a l'esprit. Ne faut il pas mieux chercher une
solution autour de python ?
Na, c est pas un troll. A une epoque je cherchais a resoudre ce genre de
probleme avec perl. Mais plus tard quand je reprenais un script perl, je me
rends compte qu'il faut que je reapprenne a nouveau perl (n'utilisant pas tous
les jours).
Du coup, pour faire des choses un peu poussé (c'est à dire utilisation de
sed/grep/cut/paste) ne vaut il pas mieux passer par du python qui est plus
lisible que le perl ?
On 2013-02-06, Kevin Denis wrote: [probleme sur sed]
Moi aussi j'utilise souvent sed mais aussi awk et tout ca ... Mais une question me vient a l'esprit. Ne faut il pas mieux chercher une solution autour de python ?
Na, c est pas un troll. A une epoque je cherchais a resoudre ce genre de probleme avec perl. Mais plus tard quand je reprenais un script perl, je me rends compte qu'il faut que je reapprenne a nouveau perl (n'utilisant pas tous les jours).
Du coup, pour faire des choses un peu poussé (c'est à dire utilisation de sed/grep/cut/paste) ne vaut il pas mieux passer par du python qui est plus lisible que le perl ?