繁体   English   中英

sed -e 's|PATH="\(.*\)"|PATH="/opt/man/common/bin:\1"|g' -i /etc/environment 行是什么意思

[英]what is meaning of sed -e 's|PATH="\(.*\)"|PATH="/opt/man/common/bin:\1"|g' -i /etc/environment line

以下命令是什么意思?

sed -e 's|PATH="\(.*\)"|PATH="/opt/man/common/bin:\1"|g' -i /etc/environment

它替换了所有的实例

PATH="somestring"

PATH="/opt/man/common/bin:somestring"

在文件/etc/environment

详细地

  • s|string1|string2| string2替换string1
    • 分隔符(在本例中为| )由替换命令 ( s ) 后面的字符定义。 更常见的是/
    • 最后的标志g告诉sed替换所有不重叠的匹配项(而不仅仅是第一个匹配项)
    • \(\)定义一个组(在这种情况下,引号之间的所有内容)
    • \1是对第一组的反向引用
  • -i告诉sed直接在文件中应用更改(内联),而不是写入标准输出。

编辑

正如评论中指出的那样,这个正则表达式非常脆弱。

  • 它将在任何地方匹配字符串(不仅在空格或行首之后)。 例如,它将匹配CDPATH="string"
  • 它不会匹配由'分隔的字符串。 它不会匹配PATH='somepath'
  • 它将匹配注释中的字符串。 例如# some comment with PATH="" in the text
  • 它将匹配其他字符串,例如STRING='PATH="somepath"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM