sed предназначен для выполнения s / old / new / , то есть всего . Для всего остального просто используйте awk для простоты, ясности, надежности, мобильности, производительности и т. Д. *
Посмотрите:
$ cat file
Hello world
Hello World
Lorem Ipsum sample
Lorem ipsum Foo bar And stuff
Строки, где каждое слово начинается с заглавной буквы:
$ awk 'gsub(/(^| )[[:upper:]]/,"&") == NF' file
Hello World
Строки, в которых 2 слова начинаются с заглавной буквы:
$ awk 'gsub(/(^| )[[:upper:]]/,"&") == 2' file
Hello World
Lorem Ipsum sample
Строки, в которых более 1 слова начинаются с заглавной буквы:
$ awk 'gsub(/(^| )[[:upper:]]/,"&") > 1' file
Hello World
Lorem Ipsum sample
Lorem ipsum Foo bar And stuff
Строки, в которых одинаковое количество слов начинается с заглавных букв и строчных:
awk 'gsub(/(^| )[[:upper:]]/,"&") == gsub(/(^| )[[:lower:]]/,"&")' file
Hello world
Lorem ipsum Foo bar And stuff
Попробуйте взять любой сценарий sed, который вы получите в ответ на ваш вопрос, и использовать его для вышеупомянутых (или любых других!) Случаев, если / когда ваши требования изменятся.
Вышеуказанное будет работать с любым awk в любой оболочке на любом компьютере UNIX.