gpt4 book ai didi

regex - sed -e "s/^[^#][A-Z]/export/g"将删除第一个字母......如何防止这件事?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:03 24 4
gpt4 key购买 nike

假设我有这个文件:

#!/bin/bash

#t1.sh
#There are so many comments here
#I HAVE A PEN
VAR=0
#I GOT AN APPLE
mixed
#APPLE PEN HERE
VAR1=$APPLE_PEN

现在我想在每个变量之前添加“export”并在屏幕上打印结果。我用大写字母写下这些变量名,然后调用这个 sed 命令:

cat t1.sh|sed -e "s/^[^#][A-Z]/export /g"

但结果删除了第一个字母,例如:

#I HAVE A PEN
export R1=0
#I GOT AN APPLE
mixed
#APPLE PEN HERE
export R2=$APPLE_PEN

这是为什么呢?如何解决?


顺便说一句,
我可以通过这种方式轻松地在 Notepad++ 上进行正则交换: regularexchange on notepad++

sed 是否也支持这样的交换?如果可以,如何制作?

最佳答案

您需要在模式周围添加一个捕获组,并在 RHS 部分使用反向引用来恢复结果中捕获的文本:

"s/^\([^#][A-Z]\)/export \1/"
^^ ^^ ^^

您需要转义括号,因为您使用的是 BRE POSIX 正则表达式风格,其中未转义的 ( 与文字左括号匹配。

关于regex - sed -e "s/^[^#][A-Z]/export/g"将删除第一个字母......如何防止这件事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42620036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com