在配置文件(nginx default.conf)中我得到了一些这样的字符串:
server {
listen 80;
server_name sudomain1.somewhere.com ;
location / {
proxy_set_header Host sudomain1.somewhere.com;
proxy_pass http://127.0.0.1:8999/;
}
}
在bash脚本中,我想抓住端口号" 8999 "在一个变量中,在脚本中使用它。
如果可能的话,使用上面的整个字符串。
因为在该文件中我有多次这个序列,唯一的变量标记我是" subdomain1 "
有谁知道怎么做?
答案 0 :(得分:3)
尝试使用GNU grep:
port="$(grep -A 1 'proxy_set_header.*sudomain1\.' file | grep -Po ':\K[0-9]+(?=/)')"
echo $port
输出:
8999
答案 1 :(得分:3)
您可以使用单行执行此操作:
( ln=$(grep -A 1 sudomain1 nginxconf.txt | tail -n1); port=${ln##*:}; port=${port%/*}; echo "port: $port" )
或作为剧本:
#!/bin/bash
ln=$(grep -A 1 sudomain1 nginxconf.txt | tail -n1)
port=${ln##*:}
port=${port%/*}
echo "port: $port"
首先使用sudomain1
找到grep -A 1
和后面的行,然后使用tail -n
仅保留最后一行。然后,通过简单的参数匹配/子串提取来隔离8999
。
<强>输出强>
port: 8999
注意:在您的配置文件中将subdomain1
拼写为sudomain1
。