#1 Le 08/05/2013, à 15:59
- enebre
forcer cat à écrire sur une largeur max définie (résolu)
Bonjour les amis,
J'ai un petit programme qui devrait m'afficher la dernière ligne du syslog, un ami du conky m'a donné une ligne de commande pour extraire cette dernière, mais j'aimerais que cat passe à la ligne lorsque la largeur maximum disponible soit atteinte, sinon la fin de la ligne dépassant les 300 px disponibles disparaît dans les limbes du système.
La ligne de commande à compléter avec ce retour à la ligne programmé :
cat /var/log/syslog | sed -n '$p' | sed 's/=.*$//'
voici ce que j'aimerais obtenir, en fake
voici ce que j'ai actuellement
J'ai fouillé un peu partout sur le web, je ne trouve pas la solution, pas même dans le man cat, ni dans info cat.
Dernière modification par enebre (Le 11/05/2013, à 20:15)
Hors ligne
#2 Le 08/05/2013, à 16:06
- pingouinux
Re : forcer cat à écrire sur une largeur max définie (résolu)
Bonjour,
La commande fold permet de limiter la longueur des lignes.
Pour obtenir des lignes d'au plus 40 caractères, par exemple :
fold -w 40 fichier
Hors ligne
#3 Le 08/05/2013, à 16:11
- credenhill
Re : forcer cat à écrire sur une largeur max définie (résolu)
hello
pour ne pas couper les mots
fmt -w <nb cars.> fichier
Hors ligne
#4 Le 08/05/2013, à 16:14
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
pingouinux Bonjour, merci de ton intervention, voivi comment j'ai rédigé la ligne :
cat /var/log/syslog | sed -n '$p' | fold -w 40 | sed 's/=.*$//
Bon, c'est pas bon, je viens de tester, comment devrais -je faire ?
Hors ligne
#5 Le 08/05/2013, à 16:18
- Postmortem
Re : forcer cat à écrire sur une largeur max définie (résolu)
En repartant de tes sed :
sed -rn '${s/=.*$//;s/.{40}/&\n/;p}' /var/log/syslog
Par contre, ça coupe pile à 40
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#6 Le 08/05/2013, à 16:21
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
Postmortem bonjour et merci d'intervenir et d'apporter la correction à cette commande, j'aimerais que cat aille à la ligne et finir son job d'écriture
Hors ligne
#7 Le 08/05/2013, à 16:35
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
voilà, grace à vos interventions, j'obtiens ce que je veux, merci à vous.
${voffset -15}${font Ubuntu:pixelsize=11}${execi 60 cat /var/log/syslog | sed -n '$p' | fmt -w 60 | sed 's/=.*$//'}
credenhill Bonjour et merci pour ta réponse tu as solutionné ce petit soucis,
Dernière modification par enebre (Le 08/05/2013, à 16:35)
Hors ligne
#8 Le 08/05/2013, à 21:40
- nesthib
Re : forcer cat à écrire sur une largeur max définie (résolu)
Il est inutile de faire :
cat /var/log/syslog | sed '…'
fais directement :
sed '…' /var/log/syslog
Tu économises 2 processus, ce qui peut jouer en rapidité, surtout dans un conky qui lance la commande régulièrement.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 08/05/2013, à 22:35
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
nesthib Bonsoir, merci d'apporter ton aide, j'ai essayé de rédiger la ligne comme tu le dis succinctement, mais je n'arrive pas à obtenir la précieuse ligne.
Voici la commande comme il m'a semblé devoir l'écrire selon ton message :
${sed '$p' | fmt -w 50 | sed 's/=.*$//' /var/log/syslog}
└─ $ ▶ ksed: erreur de lecture sur stdin: Erreur d'entrée/sortie
illsed: erreur de lecture sur stdin: Erreur d'entrée/sortie
Hors ligne
#10 Le 08/05/2013, à 23:19
- nesthib
Re : forcer cat à écrire sur une largeur max définie (résolu)
Il faut donner le fichier en argument au premier sed :
sed '$p' /var/log/syslog | fmt -w 50 | sed 's/=.*$//'
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#11 Le 08/05/2013, à 23:29
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
ben non ! j'ai pas encore bien fait, là il m'écrit tout le fichier, alors que je ne veux que la dernière ligne, ou mieux les deux dernières.
ben oui ! j'avais oublié -n au premier sed.
Merci, ça roule du tonnerre.
Question : si je veux les deux dernières lignes... possible, dois-je indiquer 2 à la place de n, en fait j'ai essayé et c'est pas ça.
mais bonne nuit et merci encore
Dernière modification par enebre (Le 08/05/2013, à 23:30)
Hors ligne
#12 Le 08/05/2013, à 23:45
- nesthib
Re : forcer cat à écrire sur une largeur max définie (résolu)
si tu veux les dernières lignes tu peux faire :
tail -n2 /var/log/syslog | fmt -w 50 | sed 's/=.*$//'
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#13 Le 09/05/2013, à 17:23
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
nesthib Bonjour,
Comment n'ai-je pas pensé cette combinaison, le 2 après le n.
Mais c'est bien sûr...
Merci pour ta réponse.
Dernière modification par enebre (Le 09/05/2013, à 17:23)
Hors ligne
#15 Le 10/05/2013, à 07:01
- nesthib
Re : forcer cat à écrire sur une largeur max définie (résolu)
Il me semble que conky sait gérer lui-même le retour à la ligne, regarde la doc. Regarde aussi les paramètres qui concernent la taille des zones de texte.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#16 Le 11/05/2013, à 14:17
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
nesthib, Super merci pour tes conseils avisés, je m'y atèle, en attendant de trouver je reprends la ligne du post #10.
Hors ligne
#17 Le 11/05/2013, à 17:56
- nesthib
Re : forcer cat à écrire sur une largeur max définie (résolu)
Non, si tu utilises conky pour gérer les retour de lignes, il faut virer la partie avec fmt.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#18 Le 11/05/2013, à 20:15
- enebre
Re : forcer cat à écrire sur une largeur max définie (résolu)
Désolé, mais si j'enlève la partie fmt, je n'ai plus la ligne entière !
Mais, je suis très satisfait avec ce que j'obtiens actuellement.
Pour moi c'est résolu.
encore merci à tous.
Hors ligne