Заменить или изменить содержимое файла одним выстрелом

У меня есть файл, где мне нужно изменить некоторые строки для каждой учетной записи.

Строка, которую мне нужно изменить, выглядит следующим образом:

PstlInfo <some content> NNYYYN (каждая учетная запись будет иметь эту строку)

NNYYNN (always Y or N only 6 positions) начинается с позиции 150 теперь для каждой учетной записи, которую мне нужно изменить, только PstlInfo выше строка начинается с PstlInfo как PstlInfo ниже

PstlInfo <some content> NNNNNN (независимо от вышеприведенной строки, которую мне нужно установить как NNNNNN )

Каждый раз, когда я делаю это вручную, открывая файл в редакторе vi , я хочу изменить только содержимое, которое начинается с позиции 150 (только 5 позиций).

Если есть несколько учетных записей, их легко модифицировать, но это очень утомительная работа, есть ли способ, которым я могу модифицировать файл одним выстрелом, где строка начинается с PstlInfo

Я вижу, вы используете AIX. Он имеет команду sed которая должна быть в состоянии сделать следующее:

 sed '/^PstlInfo/s/^\(.\{150\}\)[NY]\{6\}/\1NNNNNN/' <yourfile >newfile 

Это заменяет на строках, начинающихся PstlInfo , любые 6 символов, образованных N или Y ( [NY]\{6\} ) NNNNNN, в позиции 150 символов ( ^.\{150\} ) с начала строки. Эти 150 символов копируются ( \(...\) ) и восстанавливаются в заменяющей строке ( \1 ).