这是我的文字:
set $domain_name some-not-important-name.com;
我想达到这个目标:
set $domain_name test.com;
这是我到目前为止所尝试的:
DOMAIN_NAME=test.com
awk '{ sub(/ set $domain_name(.*)/, " set $domain_name $DOMAIN_NAME;") }1' file
当前结果:
set $domain_name some-not-important-name.com
更新1
我添加多个的原因whitespaces
是,该行属于nginx
配置并且它有多个空格。
由于我的文件中有 和charset
,set
而且它们不是该行的第一个字符,所以我应该 set
在前面替换为空格。
更新:(保持间距)
设置:
一个
awk
想法:假设:
$3
与字符串不匹配set
也不$domain_name
$3
不包含空格这会生成:
原答案:(不保持间距)
设置:
假设感兴趣的线只有 3 个空格分隔的字段......
一个
awk
想法:这会生成:
使用任何 POSIX awk:
无论输入行中存在哪些字符/字符串,这都将起作用并保留间距,包括正则表达式元字符、反向引用、早期字段的子字符串、空格或其他任何内容。
这会起作用
你必须逃离
$