1

sedと の両方を使用してドキュメント全体を大文字にする方法を見つけましたが、パターン内のすべてを からにawk変換したい場合はどうすればよいですか?CAPS LOCKCapital

たとえば、HTML ファイルがあり、 と の間のすべて (複数出現) を<b>からに</b>変換する必要があり、可能であれば小さな単語 (1 ~ 2 文字) を小文字にする必要があります。TITLETitle

これから:

<div id="1">
<div class="p"><b>THIS IS A RANDOM TITLE</b></div>
<table class="hugetable">
...
</table>
<div class="p"><b>THIS IS ANOTHER RANDOM TITLE</b></div>
<table class="hugetable">
...
</table>
...
</div>

これに:

<div id="1">
<div class="p"><b>This is a Random Title</b></div>
<table class="hugetable">
...
</table>
<div class="p"><b>This is Another Random Title</b></div>
<table class="hugetable">
...
</table>
...
</div>
4

1 に答える 1

2

これは最も美しい解決策ではありませんが、うまくいくと思います。

sed -r -e '/<b>/ {s/( .)([^ ]*)/\1\L\2/g}' -e 's/<b>(.)/<b>\u\1/' -e '/<b>/ {s/(\b.{1,2}\b)/\L\1/g}' data

説明:

  • 1番目の式(-e):行に<b>: が含まれている場合
    • 次に、前にスペースがある単語ごとに、スペースと最初の(大文字の)文字()を保持してから、単語の後続のすべての文字を小文字( )\1に変換します。\L\2
  • 2番目の式(-e):後の最初の単語<b>はまだ大文字になっていないため、太字のタグの後の最初の文字を選択し、<b>(.)大文字に置き換えます<b>\u\1
  • 3番目の式(-e):行に<b>: が含まれている場合も
    • 次に、長さが1文字または2文字の単語を選択\b.{1,2}\bし、小文字に置き換えます\L\1
于 2012-08-30T13:08:20.530 に答える