我有一个文件,需要修改每个帐户的一些行。
我需要修改的行如下所示:
PstlInfo <some content> NNYYYN
(每个账户都会有这一行)
NNYYNN (always Y or N only 6 positions)
现在,对于每个帐户,150
我只需要修改上面的行,从以下PstlInfo
位置开始
PstlInfo <some content> NNNNNN
(无论上面的行我需要设置为NNNNNN
)
每次我通过在vi
编辑器中打开文件来手动执行此操作时,我只想更改从位置开始的内容150
(仅 5 个位置)。
如果帐户很少,则很容易修改,否则这是非常乏味的工作,有什么方法可以一次性修改行开头的文件PstlInfo
答案1
我发现您正在使用 AIX。它有一个sed
命令应该能够执行以下操作:
sed '/^PstlInfo/s/^\(.\{150\}\)[NY]\{6\}/\1NNNNNN/' <yourfile >newfile
这会在 开始的行上将由PstlInfo
N 或 Y ( ) 组成的任何 6 个字符替换为 NNNNNN,位于距行首[NY]\{6\}
150 个字符 ( ) 的位置。^.\{150\}
这 150 个字符被复制 ( \(...\)
) 并恢复到替换字符串 ( \1
) 中。