2013-05-08 86 views
-1

我有一個包含大量內容的HTML文件。我想從中提取特定的行。解析文件,提取內容並對提取的內容執行操作

例: 我想提取多行具有這種特定的內容"class="red"

<tr class="even"><td>***FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq***</a><td align='center' **class="red"**></tr> 

一旦我抽出這條線,我想這個字符串:FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq

此字符串是一個目錄的名字,我想將內容從這個目錄到特定的目錄(/ home /用戶)複製

我想是要爲那些行的所有OCCURENCES做此操作文字"class=red"

想用sed來做到這一點。

回答

0

這將適用於您提供的示例。我也認爲有趣的字符串的一部分*是不是真的是你輸入文件的一部分,但如果是這將需要的調整:

$ cat foo.html 
foo 
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq1</a><td align='center' class="red"></tr> 
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq2</a><td align='center' class="red"></tr> 
bar 
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq3</a><td align='center' class="red"></tr> 
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq4</a><td align='center' class="red"></tr> 
quux 

$ grep 'class="red"' foo.html \ 
    | sed 's#.*<td>##g;s#</a>.*##g;s#\\#/#g' \ 
    | xargs -I% echo cp -r /home/hlrci/%/* /home/hlrci/CopyReq/ 
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq1/* /home/hlrci/CopyReq/ 
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq2/* /home/hlrci/CopyReq/ 
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq3/* /home/hlrci/CopyReq/ 
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq4/* /home/hlrci/CopyReq/ 

此搜索在foo.htmlclass="red"grep),除去一切直至幷包括<td>和一切從開始幷包括</a>在每一行(sed),讀出每一行,並工藝品一個cp命令圍繞它來複制你的文件。根據輸入文件和你的情況,你可能有偏好/想

  • 適應sed正則表達式或使其更具體
  • 使用別的東西比cp實際拷貝你的東西(tarcpiorsync ,...)

Dryrun echo如果您對輸出滿意,請刪除echo並重新運行。

+0

我使用了下面的命令:grep'class = \「red \」'samp.html | sed sed's#。*​​## g; s#。* ## g'| xargs -I%echo cp -r/home/hlrci /%/ */home/hlrci/CopyReq/ 回顯爲「cp -r/home/hlrci/FRQAUTOspml -hlr601FC122_005036_PDPContextDB8PD073BulkPDPModreqDB8PD073/*/home/hlrci/CopyReq/ :我正在丟失cp命令中的「\」字符,我想將「\」轉換爲「/」並保留它們,我該如何實現它,還請「提供給我鏈接以瞭解」s#「命令 – 2013-05-09 05:27:02

+0

看我的編輯。 ''s'命令在[sed]手冊中[here](http://www.gnu.org/software/sed/manual/sed.html#The-_0022s_0022-Command)中有解釋,但您可能也會發現[本教程](http://www.grymoire.com/Unix/Sed.html#uh-1)有用。 – 2013-05-09 19:47:41

+0

謝謝阿德里安,我瀏覽了這些教程,但我沒有看到「s#」,「#g」的任何具體示例。 「#」如何在這裏工作,想獲得關於它的一些信息。 – 2013-05-10 04:45:39