gpt4 book ai didi

regex - 使用 sed,在不同长度的单词周围加上引号

转载 作者:行者123 更新时间:2023-12-04 10:57:56 25 4
gpt4 key购买 nike

我有一个带记录的文件(csv);我想遍历每一行,找到不同长度的 alpha 单词并加上引号。

文件内容为:

12345, astringofrandomlength, anotherstringofrandomlength, 2019-01-01
12346, moreastringofrandomlength, otherstringofrandomlength, 2019-01-01

期望的输出是:
12345, 'astringofrandomlength', 'anotherstringofrandomlength', 2019-01-01
12346, 'moreastringofrandomlength', 'otherstringofrandomlength', 2019-01-01

我尝试了以下方法:
sed -e "s/\([A-Za-z]+\)/'\1'/g" datafile.csv

我知道我指定了一个组\(\) ,我在其中搜索任何字母词 [A-Za-z]+ 并且我希望使用反向引用 '\1' 之间的替换,对于每个单词中所述单词的每次出现线。但这不起作用,所以我肯定错过了一些东西。

从一个数据文件到另一个数据文件,可以找到此类词的字段的位置和数量会有所不同,例如:
12345, astringofrandomlength, 800, anotherstringofrandomlength, stringy, 2019-01-01
12346, moreastringofrandomlength, 980, otherstringofrandomlength, stringzz, 2019-01-01

最佳答案

您的正则表达式是匹配字母和文字的 POSIX BRE 模式 +签名是因为未转义 +在 POSIX BRE 模式中匹配文字加号。

您可以使用以下任一方法解决问题

sed -e "s/\([[:alpha:]]\+\)/'\1'/g" datafile.csv # GNU sed required
sed -E "s/([[:alpha:]]+)/'\1'/g" datafile.csv
sed "s/[[:alpha:]]\{1,\}/'&'/g" datafile.csv

online sed demo

请注意,第一个是 GNU sed 解决方案,第二个使用 POSIX ERE 语法,第二个使用 POSIX BRE \{1,\}匹配 1 个或多个重复的范围量词。请注意 &在第三个示例中的替换模式中插入整个匹配项(不需要捕获组)。

关于regex - 使用 sed,在不同长度的单词周围加上引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057741/

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