htmlタグをSEDコマンドに置き換える方法は?

htmlタグをSEDコマンドに置き換える方法は?

以下のタグを新しいコンテンツとタグの行に置き換えようとしています。 sedまたは他のオプションを使用してラベルとその値を変更する方法はありますか?

元のHTMLタグ(内部th>タグ):

th> file-109 /th>
th> file-209 /th>

このHTMLタグを次に変更します。

th>S.No  Name /th>
th>S.No  Name /th>

以下の方法を試してみましたが、うまくいきません。投げエラーです。

sed "s/th>file-1.*/'th>`head -5 file-109 | tail -1`/th>'/g" Diff.html
sed "s/th>file-2.*/'th>`head -5 file-209 | tail -1`/th>'/g" Diff.html

答え1

sedは/を選択した区切り文字としてさまざまな文字を使用できますが、/は置き換えたい文字列にも表示されます。したがって、私は次を選択します。

sed 's:th>file-[0-9]+ /th>:th>S.No name /th>:g' yourfile

ただし、これより複雑なものを処理するには、正規表現を使用せずにHTMLを解析する必要があります。

答え2

どれほど強力なのかはわかりませんが、次のように sed -e "s/file-[^/ ]*/S.No Name/g" Diff.htmlファイルを直接編集してみてください。sed -ie

答え3

perl -0777pe '
   s{ (?<=th>\s) file-\d+ (?=\s/th>) }{
      qx/sed -e "4q;d" "$&"/ =~ /.*/;
      $&;
   }xge;
' Diff.html

私が正しく理解したら、ファイルのth>タグと/th>タグに含まれるすべてのファイル名をFile-num選択したファイルの4行目に変更したいと思います。

関連情報