linux - 在 linux 中使用 sed 替换字符串后面的数字时得到一个额外的数字

标签 linux sed numbers solution extra

这对我来说是一个真正的 sed 问题。

我有一个原始输入文件如下。

R shthk     0.900000                                                            
R mue       0.054100                                                            
R nue       0.121400                                                            
R oue       0.137700                                                            
R ystress  150.23000 

我有一个名为 Friction1.k 的文件,其单个值为 0.123200

我想在模拟期间将 mue 的值更改为该文件中给定的值。

我使用以下 sed 脚本。

sed '/\<mue\>/!d;=;s/.* \([^ ]\+\).*/\1/;R Friction1.k' dynaRcoupledmodel.k |
sed 'N;N;s|\n|s/|;s|\n|/|;s|$|/|;q' >temp.sed
sed -i -f temp.sed dynaRcoupledmodel.k

所以它变成了

R shthk     0.900000                                                            
R mue       0.123200148                                                            
R nue       0.121400                                                            
R oue       0.137700                                                            
R ystress  150.23000   

该软件对其格式非常严格,所以当我使用此命令时,148 或 155 或 159 会额外出现,但我得到的错误是 *PARAMETER 已尝试更改固有时间。

早些时候它对我来说工作得很好,但现在却出现了错误。

我检查了 temp.sed,那个数字也在那里,但如何避免呢?

我不知道为什么这个数字是额外的,从哪里来的,但这对我来说是个问题。 任何专家都可以帮助我吗?

最好的问候

最佳答案

这可能对你有用(GNU sed):

cat Friction1.k
0.123200
cat dynaRcoupledmodel.k
R shthk     0.900000                                                            
R mue       0.054100                                                            
R nue       0.121400                                                            
R oue       0.137700                                                            
R ystress  150.23000 
 sed '1{h;d};/\<mue\>/!b;G;s/\S*\(\s*\)\n\(.*\)/\2\1/' Friction1.k dynaRcouplemodel.k
R shthk     0.900000                                                            
R mue       0.123200                                                            
R nue       0.121400                                                            
R oue       0.137700                                                            
R ystress  150.23000 

关于linux - 在 linux 中使用 sed 替换字符串后面的数字时得到一个额外的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915774/

相关文章:

java - 子文件夹不是通过 java 通过 scp 命令复制的

perl - sed - 如何仅替换 csv 文件中行的匹配部分的字符串?

c - 抽签时如何重新开始游戏

bash - 在 sed 的替换字符串中使用文件内容

Php 将 1k 更改为 1000

javascript - 给定n个数字,显示最大和最小的数字

linux - 如何在 linux bash 别名中隐藏错误通知?

linux - 程序退出后二进制文件是否留在内存中?

linux - 解压缩 bz2 文件

linux - 比较字符串并将值连接到 bash shell 中的一个字段中