如何使用awk编辑文件中的行

时间:2017-12-06 13:36:30

标签: variables awk append printf

我有一个文件,里面有一堆独特的条目,每个条目都在自己的行上。我正在尝试获取我创建的一些系统变量,并将它们插入相应行的文件中。我一直把它插入下一行,或随机回车。

以下是该文件的示例:

[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,但到目前为止还没有解决。

1 个答案:

答案 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标志。