gpt4 book ai didi

linux - bash, if then 解析文件的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:19 25 4
gpt4 key购买 nike

我的要求是查看 F-5 配置。

类似于:

 If x=virtual
grep for virtual | pool | destination

文件如下所示:

virtual vs_website_443 {
snat automap
pool pl_website_443
destination 11.11.11.11:https
ip protocol tcp
persist pr_cookie_JSESSION_AP
profiles {
oneconnect-ebiz-blah {}
pr_http_ebiz_x_forwarded_for {}
serverssl {
serverside
}
tcp-lan-optimized {}
wildcard.origin.website.com {
clientside
}
}

最佳答案

plain bash,但可以轻松转换为 POSIX sh。

#!/usr/bin/env bash

in=0 # whether we are inside a 'virtual' block
# such a block ends once we meet a line that starts with '}'

while read -r
do
if [[ $REPLY =~ ^virtual ]]; then
in=1
echo "${REPLY% *}"
elif (( in )); then
if [[ $REPLY =~ ^pool ]]
then echo "$REPLY"
elif [[ $REPLY =~ ^destination ]]
then echo "${REPLY%:*}" # or just "$REPLY" if you want the ':https' part
elif [[ $REPLY =~ ^} ]]
then in=0
fi
fi
done < file

其中文件是您的数据。您可以将其更改为“$1”并将该文件作为脚本的参数。

使用给定数据进行测试,返回:

virtual vs_website_443
pool pl_website_443
destination 11.11.11.11
<小时/>

使用普通的awk

awk '$1 == "virtual" { f=1; print $1,$2; next }         \
f == 1 { if ($1 == "pool") { print } \
else if ($1 == "destination") { print } \
else if ($0 ~ /^}/) { f=0 } \
}' file

给定的数据输出是:

 $ awk '$1 == "virtual" { f=1; print $1,$2; next } f == 1 { if ($1 == "pool") { print } else if ($1 == "destination") { print } else if ($0 ~ /^}/) { f=0 } }' file
virtual vs_website_443
pool pl_website_443
destination 11.11.11.11:https

关于linux - bash, if then 解析文件的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com