linux - 如何在 linux 中使用就地编辑 sed 将包含字符串的行上的特定记录替换为另一个文件中的数字

标签 linux string replace sed

我有一个如下所示的输入文件。

R sfst     1000.0000                                                            
$ new time step for mass scaled calculation
R dt2ms    -4.000E-7                                                            
$ friction value for blank
R mue       0.120000                                                            
$ blankholder force
R bhf      2.0000E+5                                                            
$ simulation time
R endtime   0.150000

我想更改包含“mue”的行上的值 通过以下我可以阅读但无法更改。

awk ' /mue/ { print $3 } ' input.txt

该值将从另一个文件 fric.txt 中获取。 fric.txt 只包含数字,每行一个。

fric.txt 有这样的数据

0.1234
0.234
0.0234

. .

Blockquote

应该注意的是,只有第一个实例需要被替换,格式即白色间距保持不变。

Blockquote

谁能指导我使用 sed 或 awk 执行此操作?

最佳答案

试试这个命令:

$ awk '/mue/ && !seen {getline $3 <"fric.txt"; seen=1} 1' input.txt

关于linux - 如何在 linux 中使用就地编辑 sed 将包含字符串的行上的特定记录替换为另一个文件中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9920577/

相关文章:

linux - 如何在保持在同一行的同时在终端中完成制表符?

java - 如何修剪字符串的开头和结尾双引号?

regex - 使用脚本将正则表达式替换全局应用于许多文件

c - C 语言中的replaceString()函数

javascript - 向正则表达式添加异常

android - 尝试使用 adb 递归地将 Android 文件拉入 Windows PC 时出现特殊文件名问题

windows - 将进程放在危害最小的沙箱中

java - Java 中的 String.split ("") 是否会预先完成所有工作?

java - 正则表达式匹配单词字符,任何单词之间只有 1 个空格

c - 数据链路套接字读取传出数据包?