Sustitución múltiple
Deseo usar sed para hacer múltiples sustituciones que se encuentran en un archivo names.txt dentro de un archivo JSON:
Parte del archivo JSON contiene:
{
"iscomplete": true,
"totalcount": 3,
"errcount": 1,
"requser": "Username",
"fileimportreqqueueid": 3,
"format": "JSON",
"errorfile": "http://host:port/maximo/api/fileimporterrfile/3",
"_rowstamp": "1521573",
"iscancelled": false,
"reqdatetime": "2019-02-20T14:08:22-05:00",
"name": "jason.brady@doom.com",
"href": "http://host:port/maximo/api/os/mxapifileimportqueue/_dGVzdGxvYzMuanNvbg--",
"pindex": 3,
"osname": "MXAPIOPERLOC"
}
y parte del archivo names.txt:
jason.brady@doom.com Jason.Brady
linda.ribson@doom.com L.Robson
Mike.graham@doom.com Mikegraham
Phill.Lewis@doom.com Phil.Lewis
Liam.Haggard@doom.com LiamH
James.birch@doom.com James.Birch
Intenté lo siguiente:
#!/bin/bash
while read f; do
email=`echo $f |awk '{print $1}'`
username=`echo $f|awk '{print $2}'`
sed -i 's!$email!$username!g' file.csv
done<names.txt
¿cómo puedo hacerlo?
gracias. ="" ¿cómo="" puedo="" hacerlo?=""></names.txt
¿cómo puedo hacerlo?
gracias.>
davy.ai
Para realizar múltiples sustituciones utilizando sed en un archivo JSON basado en una lista de nombres contenida en un archivo separado:
Este script lee cada línea del archivo de nombres, extrae el correo electrónico y el nombre de usuario utilizando
cut
, y luego utilizased
para sustituir todas las apariciones del correo electrónico por el nombre de usuario en el archivo JSON. Es importante utilizar un delimitador diferente para el comando de sustitución para evitar conflictos con las URL u otro contenido en el archivo JSON.Ten en cuenta que este script asume que cada línea del archivo de nombres contiene solo un correo electrónico y un nombre de usuario correspondiente. Si hay múltiples columnas o separadores en el archivo de nombres, es posible que debas ajustar los comandos
cut
en consecuencia.