3

bash私は最近、Web ページから特定のデータを解析する単純なスクリプトに取り組んでいます。私はtr '\r\n' ' ' <file1.txt >file2.txt、ページから抽出されたすべてのデータがfile1.txt1行に格納されていることを確認していました。したがって、この行のタグ間のすべての文字列を一致させ、それらを削除するか、記号<th>...</th>に置き換える必要があります。' 'だからここにいくつかの例のコードがあります:

    <td>Abaktal hm</td> </tr> <tr> <th>Package</th> <td>flm 10x400 mg</td> <th>Indesit</th>

私はsed次のようなものを使用して試しました

    sed -i 's/\<th\>.*?\<\/th\>/ /g' output.txt

しかし、うまくいきませんでした。?問題は兆候だと思います。正規表現では符号で動作し?ますが、おそらく では動作しませんbash

4

3 に答える 3

4

私はスプートニクや他の人に同意しますが、あなたの当面の質問に対する答えは次のとおりです。

sed -ir 's/<th>[^<]+<\/th>//g'

これは、サンプルデータでうまく機能します。

于 2012-10-19T05:51:51.067 に答える
0

あなたの試みは間違いなく間違っているようです。

や 、 、などのユーティリティHTMLXML使用して、やなどのタグベースのマークアップ言語を現実的に解析することはできません。をダンプ/レンダリングするだけの場合は、、、 を参照してください。データの断片を解析する方法については、 、または 学習を参照してください。BashgrepsedcutHTML(links|links2|lynx|w3m) -dumphtml2textvilistextumtidy+(xmlstarlet|xmllint|xmlgawk|xpath|xml2)xslt

見る

于 2012-10-18T20:11:10.877 に答える
0
 <td>
     Abaktal hm
 </td>
 <th>
     Package
 </th> 
 <td>
     flm 10x400 mg</td>
 <th> 
     Indesit
 </th>

このタイプの入力がある場合、以下のコマンドが機能します

sed -n '//{p; :a; N; /</th>/!ba; s/.*\n//}; p'output.txt

間のコンテンツを削除します。

 <th>...</th> tags

詳細について は、sed を使用して 2 つのパターン間の行を削除する (包括的ではない)

于 2015-08-20T10:31:55.403 に答える