我想将“disable = yes”行更改为“disable = no”到以下文件中:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
Run Code Online (Sandbox Code Playgroud)
只需用我的鼠标复制空间,但它并没有 grep 任何东西......
为什么以及如何知道“禁用”和“=”之间的元素是什么?是几个空格?制表?
我知道我可以使用以下正则表达式 grep :
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
Run Code Online (Sandbox Code Playgroud)
最后,是否有比以下更好的方法使用 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
...
}
Run Code Online (Sandbox Code Playgroud)
编辑 :
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
Run Code Online (Sandbox Code Playgroud)
roa*_*ima 12
空格通常称为“空白”,不仅可以包括空格,还可以包括制表符(和其他“空白”字符)。在正则表达式中,您通常可以使用[[:space:]]或\s(取决于 RE 引擎)引用它们,其中包括水平(空格、制表符和一些不同宽度的 unicode 间距字符,如果可用),您也可以使用它们[[:blank:]],有时\h和垂直间距字符(如换行、换页、垂直制表符或回车)。[[:space:]]有时用于代替[[:blank:]]它覆盖 Microsoft 文本文件中的虚假回车符。
您不能替换为grep- 它只是一个搜索工具。相反,要替换为yes,no您可以使用如下命令:
sed '/disable\>/s/\<yes\>/no/' /etc/xinetd.d/tftp
Run Code Online (Sandbox Code Playgroud)
这告诉在包含单词的任何行上sed替换(更改)单词yesinto 。((最初是一个/ regexp 运算符),在某些实现中,强制一个词尾(尽管要注意它不是空格分隔的词,它也会匹配))。方便地,这完全回避了空白问题。nodisable\>exviseddisable-option
小心:对于诸如 之类的行eyes yes,无界yes替换将应用于第一个实例yes并为您留下eno yes。这就是为什么我使用\<yes\>而不仅仅是yes.
为什么以及如何知道“禁用”和“=”之间的元素是什么?是几个空格?制表?
可能是标签。你可以使用类似的东西
< /etc/xinetd.d/tftp grep disable | od -c
Run Code Online (Sandbox Code Playgroud)
查看。它会将制表符显示为\t,将空格显示为空格。
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |