Me gustaría cambiar la línea "deshabilitar = sí" a "deshabilitar = no" en el siguiente archivo:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
Intenté esto:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
simplemente copiando el espacio con mi mouse, pero no atrapa nada ...
¿Por qué y cómo puedo saber cuáles son los elementos entre "deshabilitar" y "="? ¿Son varios espacios? tabulaciones?
Sé que puedo grep usando la siguiente expresión regular:
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
Y finalmente, ¿hay una mejor manera de reemplazar "sí" por "no" usando sed que lo siguiente:
[root@centos2 xinetd.d]# sed -r 's/disable.+= yes/disable =
no/g' /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
...
}
EDITAR:
Resultado del comando od gracias @ilkkachu
[root@centos2 xinetd.d]# < /etc/xinetd.d/tftp grep disable | od -c
0000000 \t d i s a b l e
0000020 = y e s \n
0000037
disable
no estaba al principio de una línea. He modificado mi RE en consecuencia.sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
tampoco funciona para mí (en MacOS, con BSD sed). Sin embargo, el código original del OP funciona bien para mí con GNU sed (v4.4).docker run -i centos:latest sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
Probablemente pestañas. Podrías usar algo como
para ver. Mostrará pestañas como
\t
y espacios como espacios.fuente
grep
no debería funcionar, lo sientoPruebe la alternativa grep llamada sift de sift-tool.org : es grep en esteroides que hace una coincidencia inteligente de patrones de expresiones regulares
fuente