一次性替换或修改文件内容

一次性替换或修改文件内容

我有一个文件,需要修改每个帐户的一些行。

我需要修改的行如下所示:

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

这会在 开始的行上将由PstlInfoN 或 Y ( ) 组成的任何 6 个字符替换为 NNNNNN,位于距行首[NY]\{6\}150 个字符 ( ) 的位置。^.\{150\}这 150 个字符被复制 ( \(...\)) 并恢复到替换字符串 ( \1) 中。

相关内容