Bash
從 shell 腳本的輸出建構一個 URL
在 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
最後列印該行(因此它僅列印實際發生替換的那些行)