Excellente contribution, éminemment constructive.benjarobin a écrit :Elle est peut être légèrement plus simple, mais ne fait même pas 1% de l'autre...
Il me semblait que le formatage multi-lignes, qu'il soit fait en sed ou awk, représentait 99% de l'intérêt des scripts.
Mais si l'essentiel est d'ajouter 2 séquences d'échappement et un bout de replace, il y a quelque chose qui m'échappe.
Puisqu'il faut tout coder, à la virgule près, les 2 scripts ci-dessous devraient convenir.
testnews.sh
Code : Tout sélectionner
#!/bin/sh
sed_news () {
echo -e "\n \\e[01;31m\t\t >> News Archlinux.fr << \\e[00m\n$(
curl -s https://archlinux.fr/feed | sed '/<title\|<pubDate/!d;s/\t*//g;s/<\/*title>/ - /g;s/[0-9]*:.*/\\e[00m/g;s/’/'"'"'/g;s/–/-/g;/Archlinux.fr/d' |
sed 'N;s/\n<pubDate>/\\033[1;34m/g;P;D;') \n"
}
awk_news () {
curl https://archlinux.fr/feed -s |
awk 'BEGIN {red="\033[1;31m"; bleu="\033[34m"; defo="\033[0m"; print red"\n\t\t>> News Archlinux.fr <<"defo} /<title>/ {z=substr($0,10,length($0)-17)}
/<pubDate>/ {gsub("’", "\x27", z); print z "||" bleu $2" " $3 " " $4 defo}'
}
alias ak_news='curl https://archlinux.fr/feed -s |
awk '"'"' BEGIN {red="\033[31m"; bleu="\033[34m"; defo="\033[0m"; print red"\n\t\t>> News Archlinux.fr <<"defo}
/<title>/ {z=substr($0,10,length($0)-17)} /<pubDate>/ {gsub("’", "\x27", z);print z "||" bleu $2" " $3 " " $4 defo}'"'"
Mauvaise approche, ce n'est pas parce qu'on ne sait pas que ça ne le fait pas (alias ak_news 1er script)waitnsea a écrit :Effectivement la commande est plus simple et tout à fait efficace, mais elle ne se laisse pas transformer en alias
A-tu fais des tests ?waitnsea a écrit :elle est plus rapide aussi (l'initiale)...
Pour avoir tester les 2 deux, les temps de réponse sont du même ordre : quelques millisecondes d'écart sur un i5.
Le temps de latence n'est pas au même endroit, avant l'affichage de ">> News Archlinux.fr <<" dans un cas, après dans l'autre ce qui explique ton impression.
Pour des choses un tant soit peu complexes, Awk me parait plus clair et plus maintenable que Sed, surtout si on n'utilise celui-ci qu'occasionnellement (avis personnel)
Le 2ème script s'utilise ainsi :
curl -s https://archlinux.fr/feed | ./awknews
awknews
Code : Tout sélectionner
#!/usr/bin/awk -f
BEGIN {
red="\033[31m"
bleu="\033[34m"
defo="\033[0m"
print red "\n\t\t>> News Archlinux.fr <<" defo
}
/<title>/ {
z=substr($0,10,length($0)-17)
}
/<pubDate>/ {
gsub("’", "\x27", z)
print z "||" bleu $2" " $3 " " $4 defo
}