Wenn Sie nur die ersten 75 Zeichen der zweiten Spalte drucken möchten (einschließlich Leerzeichen und nur zwei Spalten in der Datei), haben Sie folgende Möglichkeiten:
$ perl -pe 's/(\t.{75}).*/$1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Oder mit GNU sed
:
$ sed 's/\(.*\t.\{75\}\).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Oder:
$ sed -r 's/(.*\t.{75}).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Alternativ können Sie festlegen fold
, dass die ersten 91 Zeichen (das sind 8 für die Kennung und weitere 8 für die Registerkarte) ausgeschnitten und nur die erste Zeile gedruckt werden sollen:
$ fold -w 91 file | head -n1
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Wenn Ihre Datei mehr als 2 Spalten haben kann und Sie nur die zweite abschneiden möchten, können Sie dies tun (was, wie ich gerade bemerkt habe, nur eine Umformulierung von Stephens Antwort ist ):
$ awk -F"\t" -vOFS="\t" '{$2=substr($2,1,75)}1;' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Oder (beachten Sie, dass dies unterbrochen wird, wenn die ersten 75 Zeichen der 2. Spalte als regulärer Ausdruck interpretiert werden können):
$ 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