我有一个具有以下格式的文件(userbouquet.test.tv):
#NAME 4.8E-Astra
#SERVICE 1:64:5:0:0:0:0:0:0:0::PVU 12322 V 27500 5-6
#DESCRIPTION PVU 12322 V 27500 5-6
#SERVICE 1:0:1:64:1:5E:30B022:0:0:0:
#SERVICE 1:0:1:190:1:5E:30B022:0:0:0:
#SERVICE 1:64:6:0:0:0:0:0:0:0::PVU 12360 V 27500 5-6
#DESCRIPTION PVU 12360 V 27500 5-6
#SERVICE 1:0:1:258:1:5E:300000:0:0:0:
你能帮我一个脚本来读取每一行并检查行是否以字符串#服务开头。
如果行以string #SERVICE开头,那么将共同响应值(例如1:64:5:0:0:0:0:0:0:0:0:0:)分配给变量。
EDiT 1:仅以字符串#SERVICE开头并以":“结尾的行(示例服务1:0:1:64:1:5e:30B022:0:0:0:0:)
以字符串#SERVICE开头但以文本(注释)结尾的行也应被忽略(例如服务#1:64:5:0:0:0:0:0:0:0:0:PVU 12322 V 27500 5-6)
我设法写了以下内容:
#!/bin/bash
userbouquet="/etc/enigma2/userbouquet.test.tv"
for (( i=1; i<=$(grep "" -c $userbouquet); i++ ))
do
#
# HELP ME HERE
#
wget -q -O - http://127.0.0.1/web/zap?sRef={variable}
#example wget -q -O - http://127.0.0.1/web/zap?sRef=1:64:5:0:0:0:0:0:0:0::
sleep 3s
done
发布于 2022-01-08 01:15:36
#!/bin/bash
userbouquet="/etc/enigma2/userbouquet.test.tv"
while read -u3 a b _; do
if [[ $a == '#SERVICE' && $b == *: ]]; then
wget -q -O - "http://127.0.0.1/web/zap?sRef=$b"
sleep 3
fi
done 3< "$userbouquet"
发布于 2022-01-08 01:18:56
输入示例中的一些行以空格结尾,因此awk模式在:
和$
(行尾)之间包含$
。
#!/bin/bash
userbouquet="/etc/enigma2/userbouquet.test.tv"
for variable in $(awk '/#SERVICE.*:[[:space:]]*$/ {print $2}' $userbouquet); do
wget -q -O - http://127.0.0.1/web/zap?sRef="$variable"
sleep 3s
done
https://stackoverflow.com/questions/70628796
复制相似问题