web-dev-qa-db-fra.com

Sous Linux, comment tronquer la sortie en ligne de commande?

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

Par exemple, un grep régulier 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;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

mais j'aimerais juste avoir 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?

56

OMG, j'ai totalement oublié de cut!

grep -nr sumthin * | cut -c -80

^ fait le tour! > _ <

80

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   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

fold ne () ne coupe pas le texte restant, mais l'affiche à la ligne suivante.

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

1
Sardathrion