将第 n 个表达式替换为 sed



我需要用与以下线相似的线路中的空格替换:

%ABC 999 123 "-234" AAA
%999 123 "ABC" 456 BBB

每个表达式所包含的规则没有规则,只有一个空间将其分开。我需要用给定的字符串替换n'th(为示例,例如第4个表达式),例如:(将第4个表达式更改为666)

%ABC 999 123 "-234" AAA  ----> %ABC 999 123 666 AAA
%999 123 "ABC" 456 BBB ------> %999 123 "ABC" 666 BBB

我正在使用Linux,我无法做到。.我尝试以%(。

任何帮助将不胜感激!

$ 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

这可能对您有用(gnu sed):

sed -r 's/S+/666/4' file

这是一个可能有用的选择。

假设:

string='%ABC 999 123 "-234" AAA'
new_val=666
element=4

尝试更换第四元素可以使用" sed"one_answers" cut"

在bash中完成
replaced_string=$(echo ${string} | sed "s%$(echo ${string} | cut -d  -f${element})%${new_val}%")

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新