我有一个文件,其中包含一些类似这样的行:
ENVIRONMENT="myenv"
ENV_DOMAIN='mydomain.net'
LOGIN_KEY=mykey.pem
Run Code Online (Sandbox Code Playgroud)
我想提取后面的部分,=但不带周围的引号。我尝试过gsub这样的:
awk -F= '!/^(#|$)/ && /^ENVIRONMENT=/ {gsub(/"|'/, "", $2); print $2}'
Run Code Online (Sandbox Code Playgroud)
最终会出现-bash: syntax error near unexpected token ')'错误。它适用于单一匹配:/"/或,/'/但当我尝试匹配其中任何一个时,它不起作用。我究竟做错了什么?
小智 5
如果您只是想删除标点符号,那么您可以按如下操作......
# remove all punctuation
awk -F= '{print $2}' n.dat | tr -d [[:punct:]]
# only remove single and double quotes
awk -F= '{print $2}' n.dat | tr -d \''"\'
Run Code Online (Sandbox Code Playgroud)
tr -d \''"\'是删除任何单引号和双引号。
tr -d [[:punct:]]从标点符号类中删除所有字符
上面第二个命令的示例输出如下(不带引号):
myenv
mydomain.net
mykeypem
Run Code Online (Sandbox Code Playgroud)