Je voudrais changer la ligne "disable = yes" en "disable = no" dans le fichier suivant:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
J'ai essayé ceci:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
en copiant juste l'espace avec ma souris mais ça ne grep rien ...
Pourquoi et comment puis-je savoir quels sont les éléments entre "désactiver" et "="? S'agit-il de plusieurs espaces? tabulations?
Je sais que je peux grep en utilisant l'expression régulière suivante:
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
Et enfin, existe-t-il une meilleure façon de remplacer «oui» par «non» en utilisant sed que ce qui suit:
[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
...
}
ÉDITER :
Résultat de la commande od merci @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
pas au début d'une ligne. J'ai modifié mon RE en conséquence.sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
ne fonctionne pas non plus pour moi (sur MacOS, avec BSD sed). Le code original de l'OP fonctionne bien pour moi avec GNU sed (v4.4), cependant.docker run -i centos:latest sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
Onglets probablement. Vous pourriez utiliser quelque chose comme
à voir. Il affichera les tabulations comme
\t
et les espaces comme des espaces.la source
grep
ne devrait pas fonctionner en premier, désoléEssayez autre grep appelé SIFT de sift-tool.org - est grep sur steriods qui fait pattern matching regex intelligente
la source