有人可以解释以下 sed 语句的含义吗?
sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test
首先,请注意这PS1
是 bash 提示符。有关更多参考,请参阅如何:更改/设置 bash 自定义提示 (PS1)。
sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test
它查找文本PS1\='\\u\@[^]]*:
并将其替换为PS1\='\\u\@\\H:
文件中test
。
sed 's/hello/bye/g' file
是基本的 sed 命令,它一直在寻找hello
并替换它(意思是“全局”,所以每次找到文本时都会这样做)。bye
file
g
虽然此sed
表达式在标准输出上显示结果,但如果您希望结果更新文件,则-i
改为添加选项。
然后,请注意我提到了寻找的文本是PS1\='\\u\@[^]]*:
,而在sed
我们看到的表达式中PS1\='\\\\u\@[^]]*:
。这就是为什么任何人\
都必须被转义......并且\
角色习惯这样做。
关于寻找的具体模式:
PS1\='\\u\@[^]]*:
表示像这样的文字
PS1='\\u\@`
+
any string until the character `]` is found
+
:
所以它会匹配像PS1\='\\u\@[hello how are you]:
.
它将它们替换为PS1\='\\u\@\\H:
.