Bash

從 shell 腳本的輸出建構一個 URL

  • May 11, 2020

在 linux 伺服器上,我有一個執行 curl 並返回如下輸出的腳本:

腳本:

/usr/bin/curl -k -s https://example.com:18080/seriessnapshot?substringSearch=OpenFin%20Memory | cut --characters=44-51 | sort --unique | sed -e 's/iessnaps//g' -e '/^$/d'

輸出:

AP711671
AP714628
AP715911
AP716960
AP717267
AP717938
AP718017
AP718024
AP721570
AP721875
AP722002
AP722622

然後,我需要從每個 AP 編號的輸出中建構一個 URL,例如,我需要為每個 AP 編號返回如下輸出:

http://apRandomNumber.com:1025/

除了 AP 之外的所有內容都是靜態的,URL 的唯一動態部分是 AP 編號。

是否可以從我用來僅返回 AP 編號的同一腳本中執行此操作,如果可以,我如何將其合併到該腳本中?

簡單易行的方法是將您的sed命令替換為

sed -n -E 's|^AP([[:digit:]]+)$|http://ap\1.ztb.icb.commerzbank.com:1025/|p' 
  • -n禁止列印行,因此我們可以更好地控制最後實際列印哪些行
  • -E啟用擴展正則表達式,使其餘部分更容易
  • ^AP([[:digit:]]+)$匹配以數字開頭AP併後跟數字的整行,它將 in 之間的部分()放入\1. 如果您有一個包含多個()部分的更複雜的模式,它們將以\2等結尾。
  • 然後將的值/內容\1直接插入到替換中
  • p最後列印該行(因此它僅列印實際發生替換的那些行)

引用自:https://unix.stackexchange.com/questions/585884