Загружаются ли файлы .so в память целиком?

Нет необходимости для цикла:

$ sed 's/^.*[,|]11=\([^|]*\).*$/client id = \1/' data.in
client id = 884
client id = 405
client id = 216
client id = 735

Сценарий редактирования будет искать тег 11 ( 11 = , которому предшествует | или , ) , и замените всю строку текстом client id = , за которым следует число после 11 = (фактически что-нибудь после 11 = ] до | или до конца строки).

ОБНОВЛЕНИЕ (после новой спецификации проблемы.):

Это uglyscript.sh (требуется GNU sed и GNU awk ):

#!/bin/sh
tr ',|' '\n' |
awk -vRS="\n\n" '{ print | "sort -r"; close("sort -r") }' |
tr '\n' '|' |
sed 's/|Order/\nOrder/g' |
sed 's/^Order:\([^|]*\).*|\(38=[^|]*\).*|11=\([^|]*\).*$/Orderid-\1 \2 Clientid=\3/'
echo
  1. Первый tr поворачивает все строки входных данных в один столбец. Исходные строки в выводе разделяются пустой строкой (двумя символами новой строки).
  2. awk сортирует каждый набор строк отдельно в обратном лексикографическом порядке (так что «Порядок» идет первым).
  3. Второй tr вместе со следующим sed снова объединяет строки вместе, но теперь столбцы находятся в отсортированном порядке. tr просто заменяет все новые строки символом | , а sed разбивает строки везде, где встречается строка | Order .
  4. Последний sed похож на мое исходное решение, но просто захватывает еще несколько вещей из строк.
  5. echo в конце просто гарантирует, что в конце вывода есть новая строка.

Шаги с 1 по 3 выше необходимы, поскольку столбцы не сортируются. Столбец, содержащий 11 = , может находиться в любом месте строки, например, что очень затрудняет простое выполнение его через один скрипт sed .

Данные после шага 3 выглядят следующим образом:

Order:479959|9=205|8=FIX.4.4|60=20130624-09:45:02.046|59=0|56=MBT|55=/GCQ3|553=2453|54=1|52=20130624-09:45:02.046|49=11342|43=Y|40=1|38=723|35=D|34=388|21=1|1=30532|11=884|114=Y|10=085|100=MBTX
Order:24780|9=205|8=FIX.4.4|60=20130624-09:45:02.046|59=0|56=MBT|55=/GCQ3|553=2453|54=1|52=2013062409:45:02.046|49=11342|43=Y|40=1|38=470|35=D|34=388|21=1|1=30532|11=405|114=Y|10=085|100=MBTX
Order:799794|9=205|8=FIX.4.4|60=20130624-09:45:02.046|59=0|56=MBT|55=/GCQ3|553=2453|54=1|52=2013062409:45:02.046|49=11342|43=Y|40=1|38=350|35=D|34=388|21=1|1=30532|11=216|114=Y|10=085|100=MBTX
Order:72896|9=205|8=FIX.4.4|60=2013062409:45:02.046|59=0|56=MBT|55=/GCQ3|553=2453|54=1|52=20130624-09:45:02.046|49=11342|43=Y|40=1|38=17|35=D|34=388|21=1|1=30532|11=735|114=Y|10=085|100=MBTX|

Запускаем:

$ ./uglyscript.sh <data.in
Orderid-479959 38=723 Clientid=884
Orderid-24780 38=470 Clientid=405
Orderid-799794 38=350 Clientid=216
Orderid-72896 38=17 Clientid=735
1
01.06.2016, 20:27
0 ответов

Теги

Похожие вопросы