这对我来说是一个真正的 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/