У меня есть файл с очень старым форматом. Вот пара строк примеров:
000000582103145338520001 2000111420040924NR19 2RG195006 0119MR<PATRICK JOSEPH ROBERT<SNOWBALL<<<<THE OLD RECTORY<LONGHAM<EAST DEREHAM<NORFOLK<<INSURANCE COMPANY OFFICIAL<BRITISH<<
000000582103015819370001 1994010119981130CR2 8SZ 194205 0096MR<PETER GEOFFREY<WARD<<<<14 SUFFIELD CLOSE<SELSDON<SOUTH CROYDON<<<EXECUTIVE DIRECTOR<ENGLISH<<
000000582203047002770001 1992012619931231N1 8HP 193401 0099<JOHN HOWARD<WEBB<<<<1 SUDELEY STREET<ISLINGTON<LONDON<<<GROUP ACTUARY - COMMERCIAL UNION<BRITISH<<
000000582103000497250003 1998070119981130TN13 1SS195207 0126MR<RICHARD ANDREW<WHITAKER<LLB DMS FCII<<<STRATHBLANE ASHGROVE ROAD<<SEVENOAKS<KENT<<COMPANY SECRETARY<BRITISH<UNITED KINGDOM<
000000781D 00000020WALKER & ETH PORKER<
000000831D 00000014REID AND SONS<
000000841D 00000019A. WEST & PARTNERS<
000000861 00130029KENTSTONE PROPERTIES LIMITED<
Я пытаюсь получить символы от 41-го до конца строки, если и только если 9-й символ равен 1. Я знаю, что максимальное числоchars после char 41 равно 161.
Вот мой awk - который ломается (в основном пытался составить его из другого кода, найденного в Интернете - здесь не специалист по awk).
awk -v b=41 -v e=201
'$9 == "1"
BEGIN{FS=OFS=""} {for (i=b;i<=e;i++)
printf "%s%s", $i, (i<e ? OFS : ORS)}'
<(head -n1000 myfile.dat)
Что я ожидаюкод для вывода:
WALKER & ETH PORKER<
REID AND SONS<
A. WEST & PARTNERS<
KENTSTONE PROPERTIES LIMITED<