2011-07-19 9 views
0

私はいくつかのHTMLコードを扱っていますが、何か問題がありました。ここにいくつかのコードの抜粋であり、フォーマットは私がsedを使用して一致するパターンの前に行を挿入する方法

            <tr> 
         <td nowrap valign="top" 

と一致し、私はパターンに一致しなければならないよう<tr> .theの問題が発生する前に何かを挿入する必要がまったく同じ

ここ
             <tr> 
          <td nowrap valign="top" class="table_1row"><a name="d071301" id="d071301"></a>13-Jul-2011</td> 
          <td width="21%" valign="top" class="table_1row"><a href="http://www.info.htm" target="_blank">LCQ8: Personal data of job</a></td> 

です異なる行に 私は問題を把握するための2つの寸法を有するworks.Soテストする

grep -c "<tr>\n<td nowrap valign="top"" test.html 
grep -c "<tr>\n*<td nowrap valign="top"" test.html 
grep -c "<tr>*<td nowrap valign="top"" test.html 

を試していないが、それらのどれもしている:

  1. マッチ<td nowrap valign="top" and insert in the line above
  2. マッチ文字列全体に
           <tr> 
        <td nowrap valign="top" 

いずれにしても誰にでもやってみる方法はありますか?

+0

[あなたを助けることができる前に、私は上げ、この同様の質問を願っています] [1] [1]:http://stackoverflow.com/質問/ 6624199/how-can-i-append-a-string-of-the-first-of-a-patternのパターン –

+1

http://stackoverflow.com/q/6732702/7552 –

答えて

0
  1. try grep -P "tr>\s*\n\s*<td"
  2. <tr>の前に何かを挿入するのがどのように役立つかは不明ですが、とにかく。
  3. 引用符付きの文字列はネストしません。引用符をエスケープするか、二重引用符ではなく一重引用符を使用する必要があります。
+0

いいえ何かを検索する –

2

sedを使用すると、複数の行で並べ替えを行うことができます。マッチの代用も簡単です。

sed "/\s*<tr>\s*/ { N; s/.*<tr>\n\s*<td.*/insertion\n&/ }" 

この不可解なラインは、基本的に言う:(/\s*<tr>\s*/

    1. マッチラインが次の行に続けて(N
    2. 代替は、一致したパターンは、挿入とマッチした文字列を聖霊降臨祭ここで、&は一致する文字列を表します(s/.*<tr>\n\s*td.*/insertion\n&/

    Sedは置換を実行するのに非常に強力です。あなたはsedの詳細を知りたい場合は、このマニュアルを参照してください。 http://www.grymoire.com/Unix/Sed.html