我正试图更改正在运行的模型的.dat文件中的值。问题是代码不能简单地用sed -i的/old_text/new_text/'
我试图更改的.dat文件看起来像
0.000E-00 !Argon
7.956E-03 !Methane
0.000E-00 !Ethane
1.945E-03 !Carbon Dioxide
9.901E-01 !Nitrogen
1.000E-40 !Oxygen
0.000E-00 !Hydrogen
0.000E-00 !Nitrogen Dioxide
22 !Tropopause layer
字符串
我试图改变甲烷,氮气和二氧化碳的值,但我不能简单地告诉它取代‘7. 965 E-03!甲烷',因为在我第一次运行shell脚本后,该值将发生变化。
我试图取代!带有$'变量名'的甲烷!甲烷,但这并没有解决删除数字的问题,在我第一次编译脚本后也不起作用。
当前脚本为
#file=atmos-master-copy1/CLIMA/IO/mixing_ratios.dat
#sed -i 's/Methane.*/'$muCH4_1' !Methane/' $file
型
但是我不知道如何通过改变文件开头的内容来启动它。
1条答案
按热度按时间wgmfuz8q1#
如果要将
!Methane
的值替换为变量$muCH4_1
的值,则:字符串
^
-行锚起点\S+
-一个或多个非空格字符\s+
-一个或多个空白字符(!Methane)
-将!Methane
捕获到捕获组1$
-线路末端锚点用…代替
'"$muCH4_1"'
-由变量muCH4_1
保存的值\1
-!Methane
注意:为了使第二列像原始文件中一样排列,
muCH4_1
必须在右侧填充空格。如果这是你想要的,你可以使用printf
来做填充:型