在多个匹配字符串后插入space

Insert space after multiple matching strings

我的原文件在下面......

awk test1(GROUP)Xroot(USER)X
cat test1(GROUP)Ntest2(GROUP)Xroot(USER)X
chmod test2(GROUP)Xtest3(GROUP)Xroot(USER)N
chown test2(GROUP)Xtest3(GROUP)Xroot(USER)X
crontab test1(GROUP)Xroot(USER)Xtest2(GROUP)X

正在寻找如下输出...

awk test1(GROUP)X root(USER)X
cat test1(GROUP)N test2(GROUP)X root(USER)X
chmod test2(GROUP)X test3(GROUP)X root(USER)N
chown test2(GROUP)X test3(GROUP)X root(USER)X
crontab test1(GROUP)X root(USER)X test2(GROUP)X

我需要搜索包含 (USER)N、(USER)X、(GROUP)X、(GROUP)N 的任何内容,并在其后添加一个 space,以便与下一个分隔细绳。我尝试了很多与 sed 的组合,但不确定哪里出了问题。

您可以使用 sed:

sed -i.bak -r 's/(\((USER|GROUP)\)[XN])(.)/ /g' file
awk test1(GROUP)X root(USER)X
cat test1(GROUP)N test2(GROUP)X root(USER)X
chmod test2(GROUP)X test3(GROUP)X root(USER)N
chown test2(GROUP)X test3(GROUP)X root(USER)X
crontab test1(GROUP)X root(USER)X test2(GROUP)X