我有一个文件,里面有一堆独特的条目,每个条目都在自己的行上。我正在尝试获取我创建的一些系统变量,并将它们插入相应行的文件中。我一直把它插入下一行,或随机回车。
以下是该文件的示例:
[default]
access_key =
bucket_location = US
cloudfront_host = cloudfront.amazonaws.com
这是我到目前为止所发现的脚本/命令:
accesskey="ACCESSKEYWOULDENDUPHERE"
awk -i inplace -v x="$accesskey" '{print} /access_key =/ {print x}' /root/.s3cfg
这就是发生的事情
[default]
access_key =
ACCESSKEYWOULDENDUPHERE
bucket_location = US
cloudfront_host = cloudfront.amazonaws.com
正如您所看到的,我最终插入了一个新行。
我的目标是看起来像这样:
[default]
access_key = ACCESSKEYWOULDENDUPHERE
bucket_location = US
cloudfront_host = cloudfront.amazonaws.com
我正在试图弄清楚如何使用printf,但到目前为止还没有解决。
答案 0 :(得分:1)
要设置access_key
值,您需要将分隔符设置为=
并匹配$1
中的字段以包含access_key
(请记住尾随空格)并相应地更新$2
值。原因是对于绝对字符串(不像access_key
那样改变),直接比对它比正则表达式匹配更容易。
awk -v x="$accesskey" -vFS='=' -vOFS='=' '$1 == "access_key "{$2=" "x}1' file
根据需要添加-i inplace
标志。