60 votes

Dans Linux, comment puis-je tronquer la sortie de la ligne de commande ?

Si je grep -nr sumthin * dans mon répertoire de code source, il affiche également des lignes très longues à partir de fichiers JavaScript ou CSS minifiés. Je veux obtenir juste les 80 premiers caractères par ligne.

Par exemple, un grep normal me donne ceci :

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;} ... etc.

mais je voudrais obtenir ceci à la place :

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

Quelle commande Linux peut faire cela ?

86voto

Nat Knight Points 111

OMG, j'ai complètement oublié cut!

grep -nr sumthin * | cut -c -80

^ fait l'affaire! >_<

5voto

Jacob Vanus Points 1571

Autre que cut vous pouvez utiliser fold (et dans certains cas fmt).
fold fait partie du paquet coreutils.

$ echo "some very long long long text" | fold -w 5   # plier sur 5 caractères par ligne
some 
very 
long 
long 
long 
text

fold ne coupe pas le texte restant, mais le renvoie à la ligne suivante.

1voto

Bien que ce ne soit pas exactement ce que vous voulez faire, vous pourriez utiliser awk pour imprimer un certain nombre de colonnes. Vous pouvez spécifier que le délimiteur est ":" dans ce cas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X