我如何查找 属性 如果它没有评论那么我更新它,如果它评论然后取消评论,如果没有找到,然后写它
How do I look for a property and if its not commented then I update it, if its commented then uncomment, if not found, then write it
我想通过 bash 脚本在文件中搜索 property
,如果找到它并且如果它被评论,那么我想取消它的评论并想更新它的值(之后的内容=
符号)到 /path/to/file
。如果它没有注释并且值已经是 /path/to/file
,那么什么都不做。没找到就写。
以下是一些示例输入:
property= /path/to/file
property = /path/to/file
#property = /path/to/file
##property=/path/to/file
输出:
property = /path/to/file
这是我目前所拥有的,但它并不完全有效:
sed 's/#\?property *=.*/property=/path/to/file/'
使用您显示的示例,使用 sed
尝试以下操作:
sed -E '/^#+property/s/^#+//;/^property/ { /^property\s+=\s+\/path\/to\/file/! s/=.*/= \/path\/to\/file/}' /path/to/Input_file
解释:只需启用sed
的-E
选项即可启用ERE(扩展正则表达式)然后-i
将在 Input_file 中进行就地更新。使用命令 /^#+property/
检查行是否以 #(出现 1 次或多次)开头,然后是 属性 然后将其替换为 s/^#+
(部分代码) //
NULL in Input_file.然后检查第二个条件,如果行以 property
开头并且其中没有 /path/to/file
值,然后简单地用该行中的 = /path/to/file
替换从 =
到最后的所有内容。
上面没有 -i
选项,如果您对终端上显示的结果感到满意,请在上面的命令中使用 sed -i
。
我想通过 bash 脚本在文件中搜索 property
,如果找到它并且如果它被评论,那么我想取消它的评论并想更新它的值(之后的内容=
符号)到 /path/to/file
。如果它没有注释并且值已经是 /path/to/file
,那么什么都不做。没找到就写。
以下是一些示例输入:
property= /path/to/file
property = /path/to/file
#property = /path/to/file
##property=/path/to/file
输出:
property = /path/to/file
这是我目前所拥有的,但它并不完全有效:
sed 's/#\?property *=.*/property=/path/to/file/'
使用您显示的示例,使用 sed
尝试以下操作:
sed -E '/^#+property/s/^#+//;/^property/ { /^property\s+=\s+\/path\/to\/file/! s/=.*/= \/path\/to\/file/}' /path/to/Input_file
解释:只需启用sed
的-E
选项即可启用ERE(扩展正则表达式)然后-i
将在 Input_file 中进行就地更新。使用命令 /^#+property/
检查行是否以 #(出现 1 次或多次)开头,然后是 属性 然后将其替换为 s/^#+
(部分代码) //
NULL in Input_file.然后检查第二个条件,如果行以 property
开头并且其中没有 /path/to/file
值,然后简单地用该行中的 = /path/to/file
替换从 =
到最后的所有内容。
上面没有 -i
选项,如果您对终端上显示的结果感到满意,请在上面的命令中使用 sed -i
。