Gostaria de alterar a linha "disable = yes" para "disable = no" no seguinte arquivo:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
Eu tentei isso:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
apenas copiando o espaço com o mouse, mas ele não recebe nada ...
Por que e como posso saber quais são os elementos entre "desativar" e "="? São vários espaços? tabulações?
Eu sei que posso grep usando o seguinte regex:
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
E, finalmente, existe uma maneira melhor de substituir "sim" por "não" usando sed do que o seguinte:
[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
...
}
EDIT:
Resultado do comando od obrigado @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
não estava no começo de uma linha. Eu alterei meu RE de acordo.sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
também não funciona para mim (no MacOS, com BSD sed). O código original do OP funciona bem para mim com o GNU sed (v4.4).docker run -i centos:latest sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
Provavelmente guias. Você poderia usar algo como
ver. Ele mostrará guias como
\t
e espaços como espaços.fonte
grep
não deve trabalhar, desculpeExperimente a alternativa grep chamada sift do sift-tool.org - é o grep em períodos que faz a correspondência inteligente de padrões de regex
fonte