Я хочу найти 2 шаблона в каждой строке, а затем распечатать их с да sh между ними в качестве разделителя. Вот пример строк:
20200323: #5357 BEAR_SPX_X15_NORDNET_D1 {CU=DKK, ES=E, II=DK0061205473, IR=NRB, LN=BEAR SPX X15 NORDNET D1, MIC=FNDK, NS=1, PC=C, SE=193133, SG=250, SN=193133, TK="0.01 to 100,0.05 to 500,0.1", TS=BEAR_SPX_X15_NORDNET_D1, TY=W, UQ=1}
20200323: #5358 BULL_SPX_X10_NORDNET_D2 {CU=DKK, ES=E, II=DK0061205556, IR=NRB, LN=BULL SPX X10 NORDNET D2, MIC=FNDK, NS=1, PC=P, SE=193132, SG=250, SN=193132, TK="0.01 to 100,0.05 to 500,0.1", TS=BULL_SPX_X10_NORDNET_D2, TY=W, UQ=1}
20200323: #5359 BULL_SPX_X12_NORDNET_D2 {CU=DKK, ES=E, II=DK0061205630, IR=NRB, LN=BULL SPX X12 NORDNET D2, MIC=FNDK, NS=1, PC=P, SE=193131, SG=250, SN=193131, TK="0.01 to 100,0.05 to 500,0.1", TS=BULL_SPX_X12_NORDNET_D2, TY=W, UQ=1}
Учитывая приведенные выше строки, мой желаемый вывод после запуска скрипта должен выглядеть следующим образом:
BEAR_SPX_X15_NORDNET_D1 - DK0061205473
BULL_SPX_X10_NORDNET_D2 - DK0061205556
BULL_SPX_X12_NORDNET_D2 - DK0061205630
Первое значение alphanumeri c ( например, BULL_SPX_X12_NORDNET_D2) всегда находится на 3-й позиции строки. Второе значение alphanumeri c (например, DK0061205630) может находиться в разных позициях, но ему всегда предшествует «II =» и всегда точно длина 12 символов.
Я пытался реализовать свою задачу с помощью следующего сценария:
13 regex='II=.\{12\}'
14 while IFS="" read -r line; do
15 matchedString=`grep -o $regex littletest.txt | tr -d 'II=,'`
16 awk /II=/'{print $3, " - ", $matchedString}' littletest.txt > temp.txt
17 done <littletest.txt
Мой мыслительный процесс и намерения / предположения:
В строке 13 определяется шаблон регулярного выражения, соответствующий строке alphanumeri c, которой предшествует "II ="
В Строка 15 переменной «matchedString» получает значение, которое извлекается из строки через регулярное выражение, а предыдущий «II =» удаляется.
В строке 16 выражение awk используется для обнаружения всех строк, содержащих «II =». ", а затем выведите третью строку, найденную в каждой строке входного файла, а также выведите значение шаблона сопоставленной строки, который был определен в предыдущей строке скрипта. Поэтому я ожидаю, что в этот момент пара извлеченных шаблонов (например, BEAR_SPX_X15_NORDNET_D1 - DK0061205473) должна быть перенесена в файл temp.txt.
В строке 17 указывается входной файл для сценария, который он может использовать.
Однако после запуска скрипта я не получил желаемого результата. Вот пример того, что я получил:
BEAR_SPX_X15_NORDNET_D1
20200323: #5357 BEAR_SPX_X15_NORDNET_D1 {CU=DKK, ES=E, II=DK0061205473, IR=NRB, LN=BEAR SPX X15 NORDNET D1, MIC=FNDK, NS=1, PC=C, SE=193133, SG=250, SN=193133, TK="0.01 to 100,0.05 to 500,0.1", TS=BEAR_SPX_X15_NORDNET_D1, TY=W, UQ=1}
Как мне достичь желаемого результата, который я описал ранее?