gpt4 book ai didi

regex - 如何通过 sed 或 awk 匹配和替换匹配后的字符串

转载 作者:行者123 更新时间:2023-12-05 05:11:47 25 4
gpt4 key购买 nike

我有一个文件,我想使用 cat 将其修改为一个新文件。所以该文件包含如下行:

name "myName"
place "xyz"

等等....

我希望将这些行更改为

name "Jon"
place "paris"

我试过这样做,但它不起作用:

cat originalFile | sed 's/^name\*/name "Jon"/' > tempFile 

我尝试使用各种特殊字符,但都没有用。我无法识别名称后的空格字符,然后是“myName”。

最佳答案

您可以使用 .* 匹配该行的其余部分,您可以将空格与空格匹配,或者 [[:blank:]][[:space:]]:

sed 's/^\(name[[:space:]]\).*/\1"Jon"/;s/^\(place[[:space:]]\).*/\1"paris"/' originalFile > tempFile

请注意,这里有两个替换命令以 s 分号连接。第一部分包含一个捕获组,这是必需的,因为空格 POSIX 字符类不是文字,为了在替换 \1 后保留它,应该使用反向引用(插入捕获的文本第 1 组)。

参见 online demo :

s='name "myName"
place "xyz"'
sed 's/^\(name[[:space:]]\).*/\1"Jon"/;s/^\(place[[:space:]]\).*/\1"paris"/' <<< "$s"

输出:

name "Jon"
place "paris"

关于regex - 如何通过 sed 或 awk 匹配和替换匹配后的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55191652/

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