2013-06-21 59 views
0

我編碼在bash小腳本,閱讀一些HTML和應打印鏈接的href:擊:異常斷線

#!/bin/bash 

link=$(echo $source | sed -ne 's#^.*<a href="\([^"]*\)".*$#\1#p') 

    if [ "$(echo "$link" | grep '/fonts/list/style')" ] 
    then 
     echo "http://www.domain.com$link/10000" 
    fi 

的VAR源是在我的例子:

<li><span>19</span><a href="/fonts/list/style/home words">linktext</a></li> 

的問題:劇本打印不

http://www.domain.com/fonts/list/style/home words/1000 

,而不是它打印

http://www.domain.com/fonts/list/style/home 
words/1000 

如何刪除或避免此換行符?

+1

不要用[標籤:慶典],[標籤:sed],[tag:grep],...解析HTML。使用合適的HTML解析器。 –

+0

顯示如何設置'$ source',這可能是問題所在。另外,你應該在'echo「$ source」'中引用它。 – Barmar

回答

0

你必須逃離"出現在<li>...

這個工作對我說:

#!/bin/bash 

source="<li><span>19</span><a href=\"/fonts/list/style/home words\">linktext</a></li>" 

link=$(echo $source | sed -ne 's#^.*<a href="\([^"]*\)".*$#\1#p') 

    if [ "$(echo "$link" | grep '/fonts/list/style')" ] 
    then 
     echo "http://www.domain.com$link/10000" 
    fi 

輸出

http://www.domain.com/fonts/list/style/home words/10000 
+0

謝謝。我簡化了該帖子的代碼。如果我將鏈接保存在數組中,例如** catlinks [$ i] = $(echo「http://www.domain.com$link/10000」)**,再次進入休息狀態。你有想法嗎? – nextone

+0

這是因爲所有「奇怪」的字符都必須被轉義:'/',''',... – fedorqui

+0

這取決於具體情況。更好的是遵循[gniourf_gniourf的評論](http://stackoverflow.com/questions/17238389/bash-unusual-line-break/17238493#comment24978219_17238389),不要使用bash。 – fedorqui