如何从字符串中删除/剥离双引号或单引号?

Mac*_*ers 2 regex bash awk

我有一个文件,其中包含一些类似这样的行:

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)