j'ai pu le faire avec sed et cat mais c'est pas propre
As-tu une contrainte qui te limite à ces outils, ou est-ce juste du masochisme ?
Pour ma part, sauf contrainte forte (par exemple la nécessité qu’un script puisse tourner sur des systèmes dont je n’ai pas le contrôle et dont je ne suis pas sûr des outils installés), j’utilise des outils efficaces, ça épargne ma santé mentale.
Pour ajouter les guillemets à la solution d’Étienne :
awk '{ print "url" NR "=\"" 0ドル "\"" }' fichier_a_traiter
AWK est l’outil typique pour ce genre de manipulation, plus puissant et moins cryptique que sed.
À noter : 0ドル contient la ligne sans le caractère de saut de ligne, donc le guillemet final est sur la bonne ligne.
Perl, c’est légèrement moins simple pour les cas triviaux que le shell ou AWK, mais quand le cas se complique, c’est bien plus puissant.
À noter :
-n le fait boucler sur les lignes de l’entrée standard ou des fichiers passés en paramètres (comme awk),
-l le fait enlever les sauts de ligne en entrée et les remettre en sortie (ainsi le guillemet final est sur la bonne ligne ; man perlrun pour plus de détails),
$. est le numéro de la ligne courante,
$_ la ligne courante (man perlvar),
il interprète les variables dans les chaînes de caractères, comme le shell.
D’un autre côté, en situation hostile (ni Perl, ni AWK), je ferais ça en shell pur (pas besoin de sed, il n’y a pas de remplacement à faire) :
nl=0; echo -e 'a\nb\nc' | while read l; do nl=$((nl+1)); echo "url$nl=\"$l\""; done; unset nl
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
[^] # Choix des outils
Posté par Arthur Accroc . En réponse au message Comment mettre un caractère e n fin de la premiere ligne sur shell. Évalué à 3. Dernière modification le 23 octobre 2019 à 15:00.
As-tu une contrainte qui te limite à ces outils, ou est-ce juste du masochisme ?
Pour ma part, sauf contrainte forte (par exemple la nécessité qu’un script puisse tourner sur des systèmes dont je n’ai pas le contrôle et dont je ne suis pas sûr des outils installés), j’utilise des outils efficaces, ça épargne ma santé mentale.
Pour ajouter les guillemets à la solution d’Étienne :
AWK est l’outil typique pour ce genre de manipulation, plus puissant et moins cryptique que sed.
À noter : 0ドル contient la ligne sans le caractère de saut de ligne, donc le guillemet final est sur la bonne ligne.
Sinon, avec Perl :
Perl, c’est légèrement moins simple pour les cas triviaux que le shell ou AWK, mais quand le cas se complique, c’est bien plus puissant.
À noter :
-n le fait boucler sur les lignes de l’entrée standard ou des fichiers passés en paramètres (comme awk),
-l le fait enlever les sauts de ligne en entrée et les remettre en sortie (ainsi le guillemet final est sur la bonne ligne ; man perlrun pour plus de détails),
$. est le numéro de la ligne courante,
$_ la ligne courante (man perlvar),
il interprète les variables dans les chaînes de caractères, comme le shell.
D’un autre côté, en situation hostile (ni Perl, ni AWK), je ferais ça en shell pur (pas besoin de sed, il n’y a pas de remplacement à faire) :
nl=0; echo -e 'a\nb\nc' | while read l; do nl=$((nl+1)); echo "url$nl=\"$l\""; done; unset nl
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone