Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed+替换字符串/单词并忽略字符串后的空格_Sed - Fatal编程技术网

sed+替换字符串/单词并忽略字符串后的空格

sed+替换字符串/单词并忽略字符串后的空格,sed,Sed,我使用以下sed语法将时区字符串替换为时区 事实上,我们需要替换它, 但如果在时区字符串之后有一个或多个空格,则sed不会替换它 我的问题是,为了替换时区字符串,我需要在sed语法中更改什么 在这两种情况下 在时区字符串之后,我们没有任何空间 在时区字符串之后,我们有一个或多个空间 sed -i '/timezone$/s/timezone/#timezone/' file 您可以尝试: sed -i.bak -r 's/timezone ?$/#timezone/' file 您需要添加以

我使用以下sed语法将时区字符串替换为时区

事实上,我们需要替换它, 但如果在时区字符串之后有一个或多个空格,则sed不会替换它

我的问题是,为了替换时区字符串,我需要在sed语法中更改什么 在这两种情况下

在时区字符串之后,我们没有任何空间 在时区字符串之后,我们有一个或多个空间

sed -i '/timezone$/s/timezone/#timezone/' file
您可以尝试:

sed -i.bak -r 's/timezone ?$/#timezone/' file
您需要添加以下内容吗?在空格之后,这将使空格成为可选的。此外,您还必须添加-r选项,以使sed理解扩展正则表达式

此外,您没有在-i选项之后指定备份扩展。

您可以尝试:

sed -i.bak -r 's/timezone ?$/#timezone/' file
您需要添加以下内容吗?在空格之后,这将使空格成为可选的。此外,您还必须添加-r选项,以使sed理解扩展正则表达式


此外,您没有在-i选项后指定备份扩展名。

将两个案例作为一个案例,您希望在“时区”位于行末尾时,将其替换为零个或多个空格。这应该是:

sed -i 's/timezone *$/#timezone/' file

如果将两种情况视为一种情况,则当“时区”位于行的末尾时,您希望将其替换为零个或多个空格。这应该是:

sed -i 's/timezone *$/#timezone/' file

这对于您的两种情况都是理想的解决方案

sed 's/timezone *$\|timezone/#&/' INPUT_FILE

这对于您的两种情况都是理想的解决方案

sed 's/timezone *$\|timezone/#&/' INPUT_FILE

假设“时区”每行只出现一次是否安全?如前所述,检查行是否以“timezone”结尾,然后将第一次出现的“timezone”替换为“timezone”。这似乎有点奇怪,但完全有可能。是的,备注-时区是一个函数-因此它每行仅显示一次是否可以安全地假设“时区”每行仅显示一次?如前所述,检查行是否以“timezone”结尾,然后将第一次出现的“timezone”替换为“timezone”。这似乎有点奇怪,但完全有可能。是的,备注-时区是一个函数-因此它每分钟只出现一个line@Davidthx condaddict对于这个伟大的解决方案,无论如何我都不需要备份,因为它的变化很小,但是从您那里学习新东西很好-:?如果只有零个空间或一个空间,则问题会询问一个或多个空间。顺便说一句,可以使用\?由于GNU sed BREs-r建议GNU sed。@David thx condaddict对于伟大的解决方案,无论如何我都不需要备份,因为它的变化很小,但从您那里学习新东西很好-:?如果只有零个空间或一个空间,则问题会询问一个或多个空间。顺便说一句,可以使用\?使用GNU sed BREs-r表示GNU sed。