Estoy intentando agregar una condición en este código, que si hay una cadena nula en el archivo de traducción para cadena o repl[cadena], por ejemplo, mi archivo input_chk.txt tiene los siguientes detalles:
entrada_chk.txt
b73_chr10 w22_chr2
w22_chr7 w22_chr10
w22_chr8
Código:
#!/usr/bin/awk -f
# Collect the translations from the first file.
NR==FNR { repl[$1]=$2; next }
# Step through the input file, replacing as required.
{
if
for ( string in repl ) {
if (length(string)==0)
{
echo "error"
}
else
{
sub(string, repl[string])
}
}
#if string is null-character,then we have to add rules,
#if repl[string] is null-character,then we have to delete rules or put # in front of all lines until we reach </rules> also
# And print.
1
# to run this script as $ ./bash_script.sh input_chk.txt file.conf
archivo.conf
<rules>
<rule>
condition =between(b73_chr10,w22_chr1)
color = ylgn-9-seq-7
flow=continue
z=9
</rule>
<rule>
condition =between(w22_chr7,w22_chr2)
color = blue
flow=continue
z=10
</rule>
<rule>
condition =between(w22_chr8,w22_chr3)
color = vvdblue
flow=continue
z=11
</rule>
</rules>
Pero mi código muestra un error en la línea 8. Cómo incluir la condición para que pueda imprimir el error si falta una cadena en la primera o segunda columna.
Respuesta1
La ejecución del script muestra los problemas:
- La línea 8 es un error de sintaxis, la palabra
if
por sí sola. - La línea 21 es un error de sintaxis, la palabra
1
por sí sola.
Al comentarlos, hay algo que cuelga {
en la línea 6. Quizás esto fue copiado de algún guión de trabajo, donde la interesante declaración de recopilación de registros en la línea 3 se procesa en la conclusión.
Corrija el script anteponiendo el {
con END
. Cambie la 1
línea 21 a }
.
Ahora (al menos) el script es sintácticamente correcto y no da errores. El resultado se ve así:
#!/usr/bin/awk -f
# Collect the translations from the first file.
NR==FNR { repl[$1]=$2; next }
# Step through the input file, replacing as required.
END {
#if
for ( string in repl ) {
if (length(string)==0)
{
echo "error"
}
else
{
sub(string, repl[string])
}
}
#if string is null-character,then we have to add rules,
#if repl[string] is null-character,then we have to delete rules or put # in front of all lines until we reach </rules> also
# And print.
}
# to run this script as $ ./bash_script.sh input_chk.txt file.conf
Sin embargo, no hace nada útil. Haciéndolo realidadesoSería al menos una pregunta más.