我无法使用grep / sed / awk从文件中保存变量。 file.txt中的文本位于表单上:
NUM_ITER = 1000 # Number of iterations
NUM_STEP = 1000
我想将这些保存到没有评论的bash变量中。
到目前为止,我试过这个:
grep -oP "^NUM_ITER[ ]*=\K.*#" file.txt
产生
1000 #
有什么建议吗?
答案 0 :(得分:0)
我会使用awk
,如下所示:
awk -F'[=[:blank:]#]+' '$1 == "NUM_ITER" {print $2}' file
将其存储在变量中:
NUM_ITER=$(awk -F'[=[:blank:]#]+' '$1 == "NUM_ITER" {print $2}' file)
答案 1 :(得分:0)
只要一行只能包含一个匹配项,sed
就可以轻松完成。
sed -n '# Remove comments
s/[ ]*#.*//
# If keyword found, remove keyword and print value
s/^NUM_ITER[ ]*=[ ]*//p' file.txt
如果您删除评论,可以将其缩小为一行。
sed -n 's/[ ]*#.*//;s/^NUM_ITER[ ]*=[ ]*//p' file.txt
-n
选项会关闭打印,最后替换后的/p
标记表示只有在替换成功后才打印该行。