這是一個相當煩人,但相當簡單的任務。根據這一guide,我寫了這個:Unescape通過XMLStarlet的&符(&) - Bugging &
#!/bin/bash
content=$(wget "https://example.com/" -O -)
ampersand=$(echo '\&')
xmllint --html --xpath '//*[@id="table"]/tbody' - <<<"$content" 2>/dev/null |
xmlstarlet sel -t \
-m "/tbody/tr/td" \
-o "https://example.com" \
-v "a//@href" \
-o "/?A=1" \
-o "$ampersand" \
-o "B=2" -n \
我成功地提取從表中的每個環節,一切都被正確地連接在一起,然而,而不是再現符號爲&我收到這在年底每一個環節:
https://example.com/hello-world/?A=1\&B=2
但實際上,我一直在尋找類似:
https://example.com/hello-world/?A=1&B=2
這個想法是使用反斜槓\&
來避開字符,以便它被忽略。最初,我嘗試將其直接放入-o "\&" \
而不是-o "$ampersand" \
,並在此情況下刪除ampersand=$(echo '\&')
。還是一樣的結果。
本質上,通過去除反斜槓它仍然輸出:
https://example.com/hello-world/?A=1&B=2
只有所述&
後面的\
被去除。
爲什麼?
我確定這是缺少的基本東西。
要提高你的答案的質量,您應該包括一些樣本輸入與期望的輸出一起,所以我們可以測試可能的解決方案。 –
你是對的。我會按照你的建議!歡呼@TomFenech –