sed? - substituir parte da linha se corresponder de outro arquivo encontrado

0

Eu preciso pegar um arquivo contendo linhas igual a essa falsa:

232.232.232.256:2001, 232.200.200.256:2314

E eu preciso executar através de outro arquivo * .json, e encontrar todas as ocorrências do primeiro "IP" e se a correspondência for encontrada, substitua-o pelo segundo "IP" do primeiro arquivo. Há sempre apenas uma ocorrência exata e o formato é exatamente o mesmo, claro que sem delimitador, neste momento é ",".

Eu decidi que abordagem seria boa, é meu primeiro "script" ou, como dizem alguns, comando mais complicado. Eu usei o linux, então o bash é um caminho, usando algo como IFS = ','; enquanto lido; e provavelmente algum uso de sed ou mabye outra coisa? ... o que eu estou procurando é o que exatamente eu preciso focar para estudo, desde a sua tarefa de trabalho e eu não posso dar ao luxo de python meu caminho para fora do (aprender python) ou estudar mais geralmente scripts e, eventualmente, obter os métodos corretos .

EDITAR:

uma linha do arquivo json eu preciso editar, "IP" a ser alterado com um novo corresponde à linha acima

{"id": "segmenter_509_1", "channel_id": 509, "profile": "profile1", "description": "Cinemax_HD (700 kbps)", "source": "udp://232.232.232.256:2001?sources=XXX.XXX.XXX.XXX&fifo_size=XXXXX&overrun_nonfatal=1", "duration": 10, "verbose": true, "waitForSync": true, "maxseg": 5, "logging_stream": true, "user_option": "-H -1", "encrypt": false, "interleaved": true, "dummy": false, "logging": true, "loglevel": 24, "ignore-errors": -1, "enabled": true, "mux": "vas"},

Cada linha é quase a mesma, apenas alguns valores são chats, mas como eu tenho uma lista de IPs antigos e novos que correspondem a apenas uma linha, acho que está tudo bem trabalhar com este exemplo

    
por J B 20.11.2018 / 11:44

1 resposta

0

Isso funcionaria?

awk -F", " 'NR == FNR {T[$1] = $2; next} {for (t in T) gsub (t, T[t])} 1' file[12]

Ele lê os "pares de substituição" de "file1" em uma matriz e, em seguida, modifica as linhas "file2" se algum padrão for encontrado.

    
por 20.11.2018 / 15:43

Tags