linux中多文件的正则表达式替换
我在linux服务器的一个文件夹中有200k个文件,我需要在其中使用regex转换这些文件 下面是要在文本文件中查找的正则表达式linux中多文件的正则表达式替换,linux,bash,shell,Linux,Bash,Shell,我在linux服务器的一个文件夹中有200k个文件,我需要在其中使用regex转换这些文件 下面是要在文本文件中查找的正则表达式 ([^\s]+?.*)=((.*(?=,$))+|.*).* 现在我需要用下面的替换值替换它 "$1":"$2", 当我在python中使用上述正则表达式时,它们工作得很好。我正在使用的服务器不可用 支持python,所以我需要使用bash命令。我尝试了下面的bash命令,但它不起作用 命令: sed -r 's/([^\
([^\s]+?.*)=((.*(?=,$))+|.*).*
现在我需要用下面的替换值替换它
"$1":"$2",
当我在python中使用上述正则表达式时,它们工作得很好。我正在使用的服务器不可用
支持python,所以我需要使用bash命令。我尝试了下面的bash命令,但它不起作用
命令:
sed -r 's/([^\s]+?.*)=((.*(?=,$))+|.*).*/"$1":"$2",/g' *20200502*
上面的bash命令不起作用测试起来有点困难,但仅分析您的方法可能会起作用:
sed -i -E "s/([^\s]+?.*)=((.*(?=,$))+|.*).*/\1$1\2$2/" *20200502*
- \第二部分中的1和\2是对第一部分中捕获的组的引用
- -E表示扩展正则表达式(+和分组)
sed-E的/([^[:space:][]+?*)=((.*==,$)+|*。*/“\1”:“\2”,/g'*20200502*
[^\s]
替换为其POSIX ERE语法等价物[^[:space:]
?=,$
,改为=?,$
“\1”:“\2”
的无效捕获组引用语法“$1”:“$2”
sed
不理解[\s]
等等,但是[[:space:][]
是POSIX的命名字符类。请参阅:hi@nikoksr我得到的错误与之前的错误相同错误:-sed:-e表达式#1,char 38:前面的正则表达式无效