gpt4 book ai didi

regex - sed 命令行 将 "aas=aas"更改为 "aas = aas"

转载 作者:太空狗 更新时间:2023-10-29 12:25:21 28 4
gpt4 key购买 nike

正则表达式/sed 专家的问题:我需要美化一些c++代码。代码中散布着具有不同类型间距的各种版本的赋值运算符。即

a=b
a =b
a= B
a = b
a= b
A = B. // the correct format needed, and so must be ignored by SED

= 两边应该只有一个空格。如果发现更多,则必须删除多余的部分。

我需要制作一个脚本来扫描文件夹和子文件夹中的所有文件,并根据需要进行搜索和替换。

有一些变体,比如 a+=b 等。

我在 OsX 上运行,但有 linux 和 windows 机器可用。

非常感谢帮助。

最佳答案

您可以使用此 sed 在所有 = 运算符前后插入一个空格:

输入文件:

cat file
a ==b
a=b
a =b
a/=b
a *=b
a+= b
a-= b
a= B
a%= B
a = b
a= b
A = B

sed 命令:

sed -E 's~[[:blank:]]*([-+*/%=]?=)[[:blank:]]*~ \1 ~g' file

a == b
a = b
a = b
a /= b
a *= b
a += b
a -= b
a = B
a %= B
a = b
a = b
A = B

这是用于匹配的正则表达式(使用 ~ 作为分隔符):

  • ~[[:blank:]]*([-+*/%=]?=)[[:blank:]]*~ - 匹配 0 个或多个空格后跟一个文字 = 之前的可选 -+*/%= 字符。我们还在第 1 组中捕获了这个运算符

这是替换中使用的模式:

  • ~\1 ~ 表示第1组捕获的字符串前后有一个空格

关于regex - sed 命令行 将 "aas=aas"更改为 "aas = aas",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43261979/

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