Script de Bash para eliminar algunas palabras clave en un archivo de texto (txt).
No estoy familiarizado con el script de bash, después de investigar un poco, encontré algunas pistas, pero aún necesito tu ayuda.
Dado que tengo un archivo resources.txt, que contiene:
a
b
c
d
y un archivo whitelist.txt, que contiene:
c
d
Me gustaría eliminar todos los elementos que coincidan exactamente con el archivo de lista blanca en el archivo de recursos.
Entonces, el resultado esperado es:
a
b
Se espera que c y d sean eliminados porque están en la lista blanca.
He creado el siguiente script para leerlo, pero no sé cómo reemplazar cada uno por uno en el archivo de recursos.
# leer el archivo de lista blanca
echo whitelist.txt | awk '{for (i=1; i<=NF; i++) printf "%s\n",$i}
# reemplazar el elemento en el archivo de recursos
awk '{sub(/c/,""); print}' resources.txt
Tu ayuda es muy apreciada, ¡muchas gracias!
davy.ai
Para eliminar todos los elementos que coincidan exactamente del archivo de lista blanca al archivo de recursos, se puede utilizar el comando
grep
con la opción-v
(inversión de coincidencia). Aquí hay un ejemplo:Explicación:
– El comando
grep
busca patrones en archivos.– La opción
-v
invierte la coincidencia, es decir, muestra las líneas que no coinciden.– La opción
-F
trata los patrones como cadenas fijas, no como expresiones regulares.– La opción
-f
especifica un archivo con los patrones a buscar.–
whitelist.txt
es el archivo que contiene los patrones a eliminar deresources.txt
.–
resources.txt
es el archivo del que se van a eliminar los patrones.–
new_resources.txt
es el archivo de salida que contiene el resultado.Luego, se puede renombrar
new_resources.txt
aresources.txt
si se desea reemplazar el archivo original.Tenga en cuenta que el orden de las opciones es importante. Debe colocar
-v
antes de-f
y-F
antes de-f
.¡Espero que esto sea de ayuda!