Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/05/2013, à 14: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
capturedcran-080513-094516.php
voici ce que j'ai actuellement
capturedcran-080513-155701.php

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, à 19:15)

Hors ligne

#2 Le 08/05/2013, à 15: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, à 15: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, à 15: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, à 15: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, à 15: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, à 15: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,

capturedcran-080513-163442.php

Dernière modification par enebre (Le 08/05/2013, à 15:35)

Hors ligne

#8 Le 08/05/2013, à 20: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 08/05/2013, à 21: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, à 22: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 08/05/2013, à 22: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, à 22:30)

Hors ligne

#12 Le 08/05/2013, à 22: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 09/05/2013, à 16: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... roll
Merci pour ta réponse.

Dernière modification par enebre (Le 09/05/2013, à 16:23)

Hors ligne

#14 Le 09/05/2013, à 16:32

enebre

Re : forcer cat à écrire sur une largeur max définie (résolu)

nesthib , en fait ça fonctionne mais j’obtiens une superposition de certaines lignes
capturedcran-090513-173216.php

Hors ligne

#15 Le 10/05/2013, à 06: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#16 Le 11/05/2013, à 13: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, à 16: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#18 Le 11/05/2013, à 19: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