LinuxBash剪切一行,该行以某个字符串开头
你好 im使用LinuxBash命令提取每个sip帐户的某些数据,并将它们放在彼此旁边 我有一个名为$peers的数组,我将所有1000个sip放入其中,现在我需要对它们进行for循环,以将每个sip设置为其useragent 到目前为止,我得到的是LinuxBash剪切一行,该行以某个字符串开头,linux,bash,Linux,Bash,你好 im使用LinuxBash命令提取每个sip帐户的某些数据,并将它们放在彼此旁边 我有一个名为$peers的数组,我将所有1000个sip放入其中,现在我需要对它们进行for循环,以将每个sip设置为其useragent 到目前为止,我得到的是 #! /bin/bash peers="$(asterisk -rx "sip show peers" | cut -f1 -d" " | cut -f1 -d"/" "=")" "= " asterisk -rx "sip show peer
#! /bin/bash
peers="$(asterisk -rx "sip show peers" | cut -f1 -d" " | cut -f1 -d"/" "=")" "= " asterisk -rx "sip show peer " $peer | cut -f2 -d"Useragent"
for peer in $peers do
echo $peers
done
#echo $peers
我需要从以“Useragent”开头的行集合中提取一行
我首先运行asterisk-rx“sip show peer 101”
,这将给出下面的结果
* Name : 101
Description :
Secret : <Set>
MD5Secret : <Not set>
Remote Secret: <Not set>
Context : outgoing
Record On feature : automon
Record Off feature : automon
Subscr.Cont. : <Not set>
Language :
Tonezone : <Not set>
AMA flags : Unknown
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
Named Callgr :
Nam. Pickupgr:
MOH Suggest :
Mailbox :
VM Extension : asterisk
LastMsgsSent : 0/0
Call limit : 0
Max forwards : 0
Dynamic : Yes
Callerid : "" <>
MaxCallBR : 384 kbps
Expire : 23
Insecure : no
Force rport : Yes
Symmetric RTP: Yes
ACL : No
DirectMedACL : No
T.38 support : No
T.38 EC mode : Unknown
T.38 MaxDtgrm: -1
DirectMedia : Yes
PromiscRedir : No
User=Phone : No
Video Support: No
Text Support : No
Ign SDP ver : No
Trust RPID : No
Send RPID : No
Subscriptions: Yes
Overlap dial : Yes
DTMFmode : rfc2833
Timer T1 : 500
Timer B : 32000
ToHost :
Addr->IP : xxx.xxx.xxx.xxx:5060
Defaddr->IP : (null)
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username: 101
SIP Options : (none)
Codecs : (gsm|ulaw|alaw|g729|g722)
Codec Order : (gsm:20,g722:20,g729:20,ulaw:20,alaw:20)
Auto-Framing : No
Status : OK (9 ms)
Useragent : UniFi VoIP Phone 4.6.6.489
Reg. Contact : sip:101@xxx.xxx.xxx.xxx:5060;ob
Qualify Freq : 60000 ms
Keepalive : 0 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
RTP Engine : asterisk
Parkinglot :
Use Reason : No
Encryption : No
但是仍然存在问题,我的问题是变量的循环和sed
:
... | sed -nE '/Useragent/ s/^[^:]+/101 /p'
将行与/Useragent/
匹配Useragent
用s/^[^:::]+/101
101
bash
变量声明中尝试执行的操作=
周围不能有任何空格。DO:output=$(星号-rx“sip show peer$peers”| sed-nE'/Useragent/s/^[^:]+/101/p')
谢谢:)在第一个变量$peers中,我添加了大约2000个数字,每个数字看起来像“1000”“1001”“1002”现在我想在一个4循环中使用这个变量来循环每一个变量,并输出第二个参数捕获输出,这样您就可以echo
它是一个。无论如何,除非您特别要求shell对值执行空格标记化和通配符扩展,否则应该将变量放在双引号中。
... | sed -nE '/Useragent/ s/^[^:]+/101 /p'