因此,我有一个keywords.robot文件,它的开头如下所示:
***SETTINGS***
library rfgui.py maximum_allowed_heartbeats_missed=2 DISPLAY=12
library OperatingSystem
library others.py
现在,该文件将与Docker一起运行,但上面显示的值将更改为0,例如
***SETTINGS***
library rfgui.py maximum_allowed_heartbeats_missed=2 DISPLAY=0
library OperatingSystem
library others.py
我是否可以在Dockerfile的运行部分使用sed/awk命令来改变这一点,因此我的Dockerfile运行部分可能类似于:
RUN ["sh", "sed (...) > keywords.robot", "robot keywords.robot"]
第一种解决方案:与您展示的样品。使用
awk
可以尝试以下替代方法。这只处理DISPLAY=digits的一次出现(此处可选匹配数字)。对于此处的多次出现,您可以从sub
更改为gsub
使用RS(记录分隔符)选项的GNU
awk
第二个解决方案尝试:如果您对
-E
和-i
使用GNU,对[[:space:]]
和[^[:space:]]
使用\s/\S
速记:我将按照下面的方式使用GNU
AWK
来完成这个任务,让file.txt
内容然后
输出
说明:如果最后一列内容(
$NF
)以(^
)DISPLAY=
开头,则将最后一列内容设置为DISPLAY=0
。对于每一行,执行print
。请注意,这样会将多个空格压缩为一个空格,用于修改发生的行。如果必须有3个空格,则将代码更改为awk 'BEGIN{OFS=" "}$NF~/^DISPLAY=/{$NF="DISPLAY=0"}{print}' file.txt
(在gawk 4.2.1中测试)
相关问题 更多 >
编程相关推荐