0

有人可以解释以下 sed 语句的含义吗?

sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test
4

1 回答 1

2

首先,请注意这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并替换它(意思是“全局”,所以每次找到文本时都会这样做)。byefileg

虽然此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:.

于 2013-08-22T09:43:39.097 回答