用sed代替n表达式

use*_*860 2 regex bash sed

我需要用以下类似的行替换由空格分隔的第n个表达式:

%ABC 999 123 "-234" AAA
%999 123 "ABC" 456 BBB
Run Code Online (Sandbox Code Playgroud)

每个表达式可以包含的内容没有规则,只有它由空格分隔.我需要用给定的字符串替换n'(为了示例,说第4个表达式),例如:(将第4个表达式更改为666)

%ABC 999 123 "-234" AAA  ----> %ABC 999 123 666 AAA
%999 123 "ABC" 456 BBB ------> %999 123 "ABC" 666 BBB
Run Code Online (Sandbox Code Playgroud)

我正在使用linux,我无法做到这一点..我尝试grepping for%(.*){5}和其他尝试,但我无法让它运行...

任何帮助,将不胜感激!

Ed *_*ton 8

$ awk '{$4=666}1' file
%ABC 999 123 666 AAA
%999 123 "ABC" 666 BBB

$ sed 's/[^ ]\+/666/4' file
%ABC 999 123 666 AAA
%999 123 "ABC" 666 BBB
Run Code Online (Sandbox Code Playgroud)