Como uso textos de substituição diferentes para um padrão encontrado várias vezes [duplicado]

0

arquivo de log de amostra:

apple AAA rose
banana AAA tulip
orange AAA marigold

arquivo de texto de substituição:

111
222
333

Resultado esperado:

apple 111 rose
banana 222 tulip
orange 333 marigold
    
por Ranjoy Saha Roy 02.10.2018 / 12:14

2 respostas

1

Existem inúmeras maneiras de esfolar um gato. Vamos supor que a conexão entre os dois arquivos esteja on-line. este, que paste s alinha e, em seguida, desloca a palavra à direita para o campo contendo AAA usando "" referências de volta "":

paste sample_log replacement-text | sed -r 's/AAA ([^[:space:]]*[[:space:]]*)(.*$)/ /'
apple 111 rose  
banana 222 tulip    
orange 333 marigold 

ou este, o que faz com que awk leia as substituições em uma matriz e, em seguida, substitua o segundo campo pelo respectivo elemento da matriz:

awk 'NR==FNR {T[NR] = $0; next } {$2 = T[FNR]} 1' replacement-text sample_log 
apple 111 rose
banana 222 tulip
orange 333 marigold
    
por 02.10.2018 / 12:32
0
#!/bin/bash 
paste logfile.txt replacement.txt | while IFS= read -r line; do

echo $line | sed "s/'echo $line | awk '{print $2}''/'echo $line | awk '{print $4}''/g" | awk '{print $1 " " $2 " " $3 " "}'

done
    
por 02.10.2018 / 12:39