Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LinuxBash剪切一行,该行以某个字符串开头_Linux_Bash - Fatal编程技术网

LinuxBash剪切一行,该行以某个字符串开头

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

你好

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 " $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脚本,我在循环SIP时遇到了一些问题,您介意告诉我我的循环有什么问题吗?我用新的脚本更新了我的问题,就像我用你的答案更新了一样included@AndreaVisnenzaAndy不确定您在
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'