我正在尝试找出一种使用 sed 或 awk 的方法,它会找到一个已知的字符串,让我们说已知文件名中的“名称”,让我们说“filename.txt”。每次出现字符串后,“名称”都有一个空格,然后是一个十进制值,范围从 0.00001 - 999.99999,在十进制之前和之后都有那么多数字。在大多数情况下,该值属于 X.XXXXXX 类型。这个值总是在字符串“name”之后。我希望能够用我给它的值替换“名称”之后的十进制值,比如说“mydecimalvalue”。
同样,如果“filename.txt”中不存在“name”,我想将它添加到字符串“name1”之后,该字符串是已知的,并且将存在于每个“filename.txt”中。有任何想法吗?解释也将不胜感激,因为我很容易迷失在正则表达式和选项含义中。
例如,filename.txt 可能如下所示:
garbage 10.34420
name1 34.23000
name 8.32345
moregarbage 4.23324
例如,我想用“name 15.43200”替换“name 8.32345”。如果文件中任何地方都不存在后跟任何类型值的“name”,我想在“name1 34.23000”之后写“name 15.43200”。如果文件中确实存在“名称”,则可以假设它在整个文件中只存在一次。谢谢!