Извлечь текстовый префикс и список URL в последовательную пронумерованную строку вывода - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь извлечь "product_sku" из текстового файла (raw.txt) со списком URL.Затем мне нужно добавить извлеченный текст в качестве суффикса в конец каждого URL-адреса с номером (0-36) в выходной файл (clean.txt)

Каждая группа URL-адресов имеет свой «product_sku», поэтому каждыйНабор строк нуждается в "product_sku", который соответствует группе URL.

Я могу извлечь URL, используя следующее:

cat raw.txt | grep -E -o "WEBSITE/product_images/870-.*" > clean.txt

Я пытаюсь добавить "product_sku"в список.

Код показан ниже.

... ... указывает дополнительные URL-адреса, которые были удалены для ясности.

var StockNumber = 'U52684'
var product_id = '972930'
var product_sku = 'NN26ZZA'
        var threesixty_start_frame = 4
    var threesixty_images = WEBSITE/product_images/870-972930/XafJtPxTqNQuPNQpjF5h.JPG
WEBSITE/product_images/870-972930/9YZH6VMT2zH6AntfaAIG.JPG
WEBSITE/product_images/870-972930/SrE9oVwVmJjS58SwZB9q.JPG
WEBSITE/product_images/870-972930/1enLX6dc9bbG7k9SEAfL.JPG

... ...

var StockNumber = 'U75102'
var product_id = '768442'
var product_sku = 'LT65YMP'
        var threesixty_start_frame = 4
    var threesixty_images = WEBSITE/product_images/870-768442/fg7G7CX2Z0oK8mCVlJN3.JPG
WEBSITE/product_images/870-768442/PGGJ5RaWoYx7VStbsBjL.JPG
WEBSITE/product_images/870-768442/SEEbiNEWA5MXsIUwuaZH.JPG
WEBSITE/product_images/870-768442/TrEPAFaEhxhMxQNDD8qh.JPG

......

var StockNumber = 'U79649'
var product_id = '957033'
var product_sku = 'LS16ZBC'
        var threesixty_start_frame = 4
    var threesixty_images = WEBSITE/product_images/870-957033/K5iXEYmG2a4QncRBOrvL.JPG
WEBSITE/product_images/870-957033/fbaj3T5dKtmH0HTX11q5.JPG
WEBSITE/product_images/870-957033/WvBUOrjCMWQGe4gwNhrF.JPG
WEBSITE/product_images/870-957033/ixtB4SbtrFZTIVotvxSd.JPG

... ...

Идеальный результат будет выглядеть так:

WEBSITE/product_images/870-972930/XafJtPxTqNQuPNQpjF5h.JPG NN26ZZA_01.JPG
WEBSITE/product_images/870-972930/9YZH6VMT2zH6AntfaAIG.JPG NN26ZZA_02.JPG
WEBSITE/product_images/870-972930/SrE9oVwVmJjS58SwZB9q.JPG NN26ZZA_03.JPG
WEBSITE/product_images/870-972930/1enLX6dc9bbG7k9SEAfL.JPG NN26ZZA_04.JPG
...
...
WEBSITE/product_images/870-768442/fg7G7CX2Z0oK8mCVlJN3.JPG LT65YMP_01.JPG
WEBSITE/product_images/870-768442/PGGJ5RaWoYx7VStbsBjL.JPG LT65YMP_02.JPG
WEBSITE/product_images/870-768442/SEEbiNEWA5MXsIUwuaZH.JPG LT65YMP_03.JPG
WEBSITE/product_images/870-768442/TrEPAFaEhxhMxQNDD8qh.JPG LT65YMP_04.JPG
...
...

и т. Д.и т.д.

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Вы можете использовать awk для захвата product_sku, показанного в предыдущей строке, и повторного его использования согласно требованию.Например, здесь product_sku используется для всех строк, имеющих WEBSITE.Обратите внимание, что счетчик c также сбрасывается каждый раз, когда видно product_sku.Так что нумерация будет перезапущена для каждого product_sku.

awk  '/product_sku/{p_sku=$NF; c=1;next} /WEBSITE/{url=gensub(/.*(WEBSITE.*)/,"\\1","g");print url,p_sku "_"c".jpeg";c++}' input
WEBSITE/product_images/870-972930/XafJtPxTqNQuPNQpjF5h.JPG NN26ZZA_1.jpeg
WEBSITE/product_images/870-972930/9YZH6VMT2zH6AntfaAIG.JPG NN26ZZA_2.jpeg
WEBSITE/product_images/870-972930/SrE9oVwVmJjS58SwZB9q.JPG NN26ZZA_3.jpeg
WEBSITE/product_images/870-972930/1enLX6dc9bbG7k9SEAfL.JPG NN26ZZA_4.jpeg
WEBSITE/product_images/870-768442/fg7G7CX2Z0oK8mCVlJN3.JPG LT65YMP_1.jpeg
WEBSITE/product_images/870-768442/PGGJ5RaWoYx7VStbsBjL.JPG LT65YMP_2.jpeg
WEBSITE/product_images/870-768442/SEEbiNEWA5MXsIUwuaZH.JPG LT65YMP_3.jpeg
WEBSITE/product_images/870-768442/TrEPAFaEhxhMxQNDD8qh.JPG LT65YMP_4.jpeg
WEBSITE/product_images/870-957033/K5iXEYmG2a4QncRBOrvL.JPG LS16ZBC_1.jpeg
WEBSITE/product_images/870-957033/fbaj3T5dKtmH0HTX11q5.JPG LS16ZBC_2.jpeg
WEBSITE/product_images/870-957033/WvBUOrjCMWQGe4gwNhrF.JPG LS16ZBC_3.jpeg
WEBSITE/product_images/870-957033/ixtB4SbtrFZTIVotvxSd.JPG LS16ZBC_4.jpeg

Примечание. Для этого решения требуется gawk.

0 голосов
/ 22 мая 2019
$ cat tst.awk
$2 == "product_sku" {
    sku = $4
    gsub(/\047/,"",sku)
    cnt = 0
}
s = index($0,"WEBSITE/product_images/870-") {
    printf "%s %s_%02d.JPG\n", substr($0,s), sku, ++cnt
}

$ awk -f tst.awk file
WEBSITE/product_images/870-972930/XafJtPxTqNQuPNQpjF5h.JPG NN26ZZA_01.JPG
WEBSITE/product_images/870-972930/9YZH6VMT2zH6AntfaAIG.JPG NN26ZZA_02.JPG
WEBSITE/product_images/870-972930/SrE9oVwVmJjS58SwZB9q.JPG NN26ZZA_03.JPG
WEBSITE/product_images/870-972930/1enLX6dc9bbG7k9SEAfL.JPG NN26ZZA_04.JPG
WEBSITE/product_images/870-768442/fg7G7CX2Z0oK8mCVlJN3.JPG LT65YMP_01.JPG
WEBSITE/product_images/870-768442/PGGJ5RaWoYx7VStbsBjL.JPG LT65YMP_02.JPG
WEBSITE/product_images/870-768442/SEEbiNEWA5MXsIUwuaZH.JPG LT65YMP_03.JPG
WEBSITE/product_images/870-768442/TrEPAFaEhxhMxQNDD8qh.JPG LT65YMP_04.JPG
WEBSITE/product_images/870-957033/K5iXEYmG2a4QncRBOrvL.JPG LS16ZBC_01.JPG
WEBSITE/product_images/870-957033/fbaj3T5dKtmH0HTX11q5.JPG LS16ZBC_02.JPG
WEBSITE/product_images/870-957033/WvBUOrjCMWQGe4gwNhrF.JPG LS16ZBC_03.JPG
WEBSITE/product_images/870-957033/ixtB4SbtrFZTIVotvxSd.JPG LS16ZBC_04.JPG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...