使用awk只替换$ 4和$ 5之间的分隔符

Rus*_*sso 2 awk replace sed

我是awk语言的新手,我对它拥有的所有力量感到惊讶.(我今天发现了这个),因为我有这种格式的文件:

test1;test2;test3;test4;test5;test6;test7
Run Code Online (Sandbox Code Playgroud)

我需要在一个新文件中输出它并得到结果:

test1;test2;test3;test4 test5;test6;test7
Run Code Online (Sandbox Code Playgroud)

基本上加''在4美元到5美元之间.我知道有很多问题,但我无法做我想做的事.

我正在测试我在这里找到的代码:

   for (i=1;i<=3;i++)
      printf "%s;", $i

   n = split($0,tmp,/  +/)

   for (i=6;i>=8;i++)
      printf ";%s", tmp[n-i]

   print ""
}
Run Code Online (Sandbox Code Playgroud)

但我得到的输出如下:

test1;test2;test3;test4;test5;test6;;;
Run Code Online (Sandbox Code Playgroud)

你能告诉我我做错了什么吗?还有另外一种简单的方法,比如awk中的单行代码来做这个吗?先感谢您

cho*_*ban 5

我会选择这个.在问题是"替换第4个字符"的基础上你可以使用这个:

sed 's/;/ /4' <inputfile>
Run Code Online (Sandbox Code Playgroud)

那会将结果输出到stdout,或者你可以使用"sed -i"来做到这一点.

请参阅http://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html