Files

一次性替換或修改文件內容

  • September 24, 2015

我有一個文件,我需要為每個帳戶修改一些行。

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

PstlInfo <some content> NNYYYN(每個賬戶都會有這條線)

現在對於我需要修改的每個帳戶的NNYYNN (always Y or N only 6 positions)位置開始,150 上面的行開頭PstlInfo如下

PstlInfo <some content> NNNNNN(無論上面的行我需要設置為NNNNNN

每次我通過在vi編輯器中打開文件手動執行此操作時,我都想更改從位置開始的唯一內容150(僅限 5 個位置)。

如果帳戶很少,則很容易修改,否則這是非常繁瑣的工作,有什麼方法可以一次修改文件,其中行開頭PstlInfo

我看到您正在使用 AIX。它有一個sed命令應該能夠執行以下操作:

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

這將在開頭的行上替換由 NNNNNNPstlInfo組成的任何 6 個字元(由 N 或 Y ( [NY]\{6\}) 組成,位於^.\{150\}從行首開始的 150 個字元 () 處)。這 150 個字元被複製 ( \(...\)) 並在替換字元串 ( \1) 中恢復。

引用自:https://unix.stackexchange.com/questions/231748