Jika Anda ingin mencetak hanya 75 karakter pertama dari kolom kedua (termasuk spasi, dan dengan asumsi hanya dua kolom dalam file), Anda dapat melakukan:
$ perl -pe 's/(\t.{75}).*/$1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Atau, dengan GNU sed
:
$ sed 's/\(.*\t.\{75\}\).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Atau:
$ sed -r 's/(.*\t.{75}).*/\1/' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Atau, Anda bisa menggunakan fold
, menyuruhnya memotong pada 91 karakter pertama (itu 8 untuk pengidentifikasi dan 8 lainnya untuk tab), dan mencetak hanya baris pertama:
$ fold -w 91 file | head -n1
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Jika file Anda dapat memiliki lebih dari 2 kolom dan Anda hanya ingin memotong kolom kedua, Anda dapat melakukannya (yang, seperti yang baru saja saya perhatikan, hanyalah penulisan ulang jawaban Stephen ):
$ awk -F"\t" -vOFS="\t" '{$2=substr($2,1,75)}1;' file
XY981743 foobarlkasdf saflkas asfZR!sgfad asdSAD asdsadf SAdfasdf46lk lksad bar fool
Atau (perhatikan bahwa ini akan pecah jika 75 karakter pertama dari kolom ke-2 dapat diartikan sebagai ekspresi reguler):
$ 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