用索引替换文件中的字符

时间:2009-08-31 23:04:25

标签: bash string

我正在寻找一种可靠的方法来替换文本文件中的一系列字符。我知道该文件将始终遵循特定格式,并且我需要替换特定范围的字符(即从字符20开始,用'#'替换接下来的11个字符)

我找到了几个使用sed和awk的例子,它们可以在大多数文件中实现这一点。但是,在我的情况下,挂起的是文件中的字符范围包含随机乱码字符包括几个NULL字符。这会导致文件命令停止处理。

我知道最简单的修复方法是转到创建文件的进程,而不是使用NULL字符填充文件。但是,该文件是由埋在大型机上运行的古代COBOL中的进程生成的,其中的任何更改几乎都需要一次会议。

所以,知道我被我所拥有的东西困住了,有没有办法从命令行操作文件,可以成功覆盖NULL字符?

提前致谢。

1 个答案:

答案 0 :(得分:4)

GNU dd可以做到这一点

 echo '###########'|dd  of=FILENAME seek=20 bs=1 count=11 conv=notrunc

确保echo命令提供足够的字符作为输入。