Я хотел бы изменить строку «disable = yes» на «disable = no» в следующем файле:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
Я попробовал это:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
просто скопировав пространство моей мышью, но оно ничего не показывает ...
Почему и как я могу узнать, какие элементы находятся между "disable" и "="? Это несколько пробелов? табулирование?
Я знаю, что я могу grep, используя следующее регулярное выражение:
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
И наконец, есть ли лучший способ заменить «да» на «нет» с помощью sed, чем следующий:
[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
...
}
РЕДАКТИРОВАТЬ :
Результат команды od благодаря @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
не был в начале строки. Я исправил свой RE соответственно.sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
у меня тоже не работает (на MacOS, с BSD sed). Оригинальный код OP хорошо работает для меня с GNU sed (v4.4).docker run -i centos:latest sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
Возможно вкладки. Вы могли бы использовать что-то вроде
увидеть. Он будет отображать вкладки как
\t
и пробелы как пробелы.источник
grep
не должно работать, извинитеПопробуйте Grep альтернативу под названием просеять из sift-tool.org - это Grep на стероидах , что делает умный регулярок соответствие шаблону
источник