Доброе утро всем,
Чтобы использовать данные из программного обеспечения издателя, у меня есть функции, которые я могу вызывать через CLI (Linux Shell).
Один из них возвращает мне данные в следующем формате:
2601424 OPTDCBO3 EERP O 0254 5512240 TDCTAC01 B 00 0000000 N N
2602451 WHA EERP O 0254 5512353 03ZEE003 B 00 0000000 N N
2602748 OPTDCBO4 EERP O 0254 5512380 TDCTAC01 B 00 0000000 N N
2603290 OPTDCBO3 EERP O 0254 5512440 TDCTAC01 B 00 0000000 N N
2604594 OPTDCBO3 EERP O 0254 5512560 TDCTAC01 B 00 0000000 N N
2605631 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605627-EDR 00 0000000 N N
2605657 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605652-EDR 00 0000000 N N
2605663 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605653-EDR 00 0000000 N N
2606116 OPTDCBO3 EERP O 0254 5513080 TDCTAC01 B 00 0000000 N N
2716077 OPTDCBO3 EERP O 0255 5610080 TDCTAC01 B 00 0000000 N N
2716564 SOG01 TRAN O 0255 s2716564 TACSOG01 B 2716504-TAC 00 0000000 N N
2718631 OPTDCBO3 EERP O 0255 5610160 TDCTAC01 B 00 0000000 N N
7158273 OPTDCBO4 EERP O 0251 5203300 TDCTAC01 B 00 0000000 N N
7158672 WHA EERP O 0251 5203342 03ZEE001 B 00 0000000 N N
7158939 ZZZA4 LIST O 0251 B 7158938-49W 00 0000000 N N
7158978 OPTDCBO3 EERP O 0251 5203400 TDCTAC01 B 00 0000000 N N
7159853 OPTDCBO4 EERP O 0251 5203540 TDCTAC01 B 00 0000000 N N
2724704 SOU02 TRAN I 0255 s2724704 FTP_B E 2724704-SOU 00 0000000 N N
2724707 PRODS2I EERP O 0255 6219255 S2IRCE03 E 00 0000000 N N
2724708 SOU01 TRAN I 0255 s2724708 FTP_B E 2724708-SOU 00 0000001 N N
2724709 SON01 TRAN O 0255 s2724709 SOUSON11 E 2724708-SOU 00 0000001 N N
В приведенном выше примере я попытался собрать все случаи, с которыми я могу столкнуться, но даже если это не является исчерпывающим, помощь, которую я ищу, позволит мне решить проблему:)
При возврате моей команды данные отображаются в указанном выше формате в виде столбцов с пробелом для разделения первых 5 столбцов, одним или двумя пробелами (в зависимости от случая) для разделения 5-го и 6-го столбцов.
Иногда столбцы 6 и 7 полностью пусты.
Цель состоит в том, чтобы иметь возможность вернуть часть или все эти данные в правильно разделенный текстовый файл (например, с запятыми между каждым полем).
Сегодня, если я хочу получить 1-й и 7-й столбец, я использую следующую команду:
command | awk -F" " '{ print $1,$7 }'
Но, конечно, это дает мне такой результат:
2603290 TDCTAC01
2604594 TDCTAC01
2605631 B
2605657 B
2605663 B
2606116 TDCTAC01
2606214 TDCTAC01
7158672 03ZEE001
7158939 7158938-49W
7158978 TDCTAC01
Awk рассматривает столбцы, заполненные пробелами, как множество соседних разделителей, а не как «пустой» столбец, и поэтому возвращает данные следующего непустого столбца.
Есть ли у вас решение, чтобы последовательность из более чем X пробелов рассматривалась как пустой столбец, при этом управляя тем фактом, что иногда есть два пробела для разделения двух столбцов?
Примечание: Столбец № 6 может состоять из 1-6 числовых символов, поэтому вы не можете просто использовать фиксированную ширину для разделения столбца.
Спасибо!