Se si desidera stampare solo i primi 75 caratteri della seconda colonna (inclusi gli spazi e presupponendo solo due colonne nel file), è possibile eseguire:
$ perl -pe 's/(\t.{75}).*/$1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Oppure, con GNU sed
:
$ sed 's/\(.*\t.\{75\}\).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
O:
$ sed -r 's/(.*\t.{75}).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
In alternativa, puoi usare fold
, dicendo di tagliare i primi 91 caratteri (che sono 8 per l'identificatore e altri 8 per la scheda) e stampare solo la prima riga:
$ fold -w 91 file | head -n1
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Se il tuo file può contenere più di 2 colonne e vuoi solo troncare la seconda, puoi farlo (che, come ho appena notato, è solo una riformulazione della risposta di Stephen ):
$ awk -F"\t" -vOFS="\t" '{$2=substr($2,1,75)}1;' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Oppure (notare che questo si interromperà se i primi 75 caratteri della seconda colonna possono essere interpretati come un'espressione regolare):
$ 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