Облазил весь инет и так не смог понять: возможно ли просто с помощью sed или аwk поменять регистр букв на нижний/верхний между двумя тегами в текстовом файле? Например в html-файле поменять все символы между тегами <body> и </body> на нижний регистр. Вся конструкция <body>заменяемый текст</body> может располагаться на нескольких строчках.
sed и awk в основном предназначены, чтобы парсить текстовые файлы, разбитые на строки. Всякие xml лучше парсить перлом или питоном или еще чем-то для этого предназначенным. Там для этого есть и библиотеки.
Но вашу задачу можно решить, конечно, и через awk, например, так
gg@c-1:~$ cat 2lower.awk
BEGIN { flag = 0 }{ n1 = index($0, "<body>") n2 = index($0, "</body>") if ( n1 > 0 ) if (n2 > 0) $0 = substr($0, 1, n1+5) tolower(substr($0,n1+6,n2-n1-6)) substr($0, n2) else { flag = 1 $0 = substr($0, 1, n1+5) tolower(substr($0,n1+6)) } else if (n2 >0) { flag = 0 $0 = tolower(substr($0,1,n2-1)) substr($0, n2) } else if (flag == 1) $0 = tolower($0) print $0}