Si vous souhaitez imprimer uniquement les 75 premiers caractères de la deuxième colonne (y compris les espaces et en supposant que deux colonnes dans le fichier), vous pouvez faire:
$ perl -pe 's/(\t.{75}).*/$1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Ou, avec GNU sed
:
$ sed 's/\(.*\t.\{75\}\).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Ou:
$ sed -r 's/(.*\t.{75}).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Alternativement, vous pouvez utiliser fold
, en lui disant de couper les 91 premiers caractères (c'est 8 pour l'identifiant et 8 autres pour l'onglet), et en imprimant uniquement la première ligne:
$ fold -w 91 file | head -n1
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Si votre fichier peut avoir plus de 2 colonnes et que vous souhaitez seulement tronquer la seconde, vous pouvez le faire (ce qui, comme je viens de le remarquer, n'est qu'une reformulation de la réponse de Stephen ):
$ awk -F"\t" -vOFS="\t" '{$2=substr($2,1,75)}1;' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Ou (notez que cela se cassera si les 75 premiers caractères de la 2ème colonne peuvent être interprétés comme une expression régulière):
$ perl -F"\t" -pale 's/$F[1]/substr($F[1],0,75)/e' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
awk 'BEGIN{OFS=FS="\t"} {$2=substr($2,1,75)}1' file