我想将一行中的多个数字替换为不同的值。例如,在字符串"uncertainty = { 0.01 , 0.01 }"中,它应该替代string "uncertainty = { 0.2 , 0.2 }"。
问题是,这些行出现在数百个文件中,括号内有不同数量的数字。
它可以是:
"uncertainty = { 0.1 , 0.1, 0.1 }"为
"uncertainty = { 0.3 , 0.3, 0.3 }"或
"uncertainty = { 0.1 , 0.1, 0.1 , 0.1, 0.1, 0.1}"为
"uncertainty = { 0.3 , 0.3, 0.3 , 0.3, 0.3, 0.3}依此类推,我必须把它们全部替换掉。
我看不出sed是怎么被用来做这个的。
发布于 2019-02-14 03:20:06
使用正则表达式。将花括号中的一个项转换为正则表达式,如:
[0-9]\.[0-9]1
这个短语的意思是“一个数字,一个句号,一个数字,一个1”。如果格式是一致的贯穿,这将只取代"0.01“的实例时,通过sed。

还有其他工具也可以满足这些需求,比如awk和tr,但是您仍然会对它们使用正则表达式。要大量替换这样的数字,可以用另一个[0-9]或[1-3]替换该"1“,以指定1-3范围内的数字。
有关正则表达式的更多信息,请参见里克谢。它们极大地扩展了几乎所有文本操作实用程序的用途。
https://askubuntu.com/questions/1118091
复制相似问题