使用数组数据(bash)替换文件中的数字



我不是bash编码专家,我想做一个类似于交互的代码来帮助我的工作。

我有一个文件,其中包含一些数字(坐标),我试图使代码从文件中读取一些特定的数字,然后将它们存储在一个数组中。使用一些算术运算修改该数组,然后用修改后的数组替换原始文件中的数字。到目前为止,除了替换文件中的数字外,我已经完成了所有操作,我尝试使用sed但它不会改变文件. 原始数字存储在一个名为"readfile"的数组中。新的数字存储在一个名为"d"的数组中。

我试图以这种方式使用sed:sed -i 's/${readfile[$j]}/${d[$k]}/' file.txt
我循环j和k以覆盖数组中的所有数字。一切似乎工作,但文件没有被修改。经过一番挖掘,我注意到sed没有读取数组的值,但我不知道如何修复这个问题。

谢谢你的帮助。

当一个文件没有被sed -i修改时,意味着sed没有找到任何匹配项来修改。你的图案是错的。

在使用"而不是'以便变量可以在字符串中实际求值之后,查看readfile数组的内容并检查它是否实际上与文本匹配。如果匹配,则在模式中查找特殊字符,这些字符可能表示特定于sed的内容(最常见的错误是/,这会干扰搜索命令)。

特殊字符的修复方法是:(1)转义它们,例如/而不仅仅是/,或者(2)(特别是/)使用另一个分隔符来搜索/替换命令(而不是s/foo/bar/,您可以使用s|foo|bar|s,foo,bar,等-几乎任何分隔符都可以工作,所以您可以选择一个您知道不在模式字符串中)。

如果你发布数据样本和更多的脚本,我们可以看看你哪里出错了。

最新更新