Предполагая, что вы используете GNU sed, одним из способов является
sed 's/\([[:space:]]\|[[:punct:]]\)i\([[:space:]]\|[[:punct:]]\)/\1I\2/g'
или что-то типа того. Это все еще оставляет случай строки, начинающейся с «я люблю собак», потому что нет места перед местоимением. Один из способов исправить это
sed 's/\(^\|[[:space:]]\|[[:punct:]]\)i\([[:space:]]\|[[:punct:]]\)/\1I\2/g'
Это все еще оставляет случай, когда у вас есть последовательный «я», как в «II», но я не могу думать ни о какой причине, почему это произошло бы в английском тексте, за исключением случаев, когда кто-то по ошибке написал «II сэр», когда правильная фраза «да» да сэр'.
Есть также неровные края, если вы также используете строчные римские цифры. Сценарий sed не сможет определить, является ли «i» местоимением или римской цифрой, но на самом деле нет хорошего решения для этого.