在命令行中从start开始的第n个偏移处插入文本

时间:2016-12-06 22:14:57

标签: bash shell awk sed

我有一个文件,其中我从起始位置偏移,我需要插入一些文本。对于例如如果文件如下所示

Hello World
How are you doing today?
I'm good. Thanks for asking.

我可能会收到3,10,25的输入偏移,从我开始到insert文字。

有命令行方式吗?我尝试过使用sed但是,它逐行工作,并且不支持从开始的偏移量。这就是我为sed写的

sed 's/./&\
 inserted text\
   /25' in.txt > out.txt

上面的内容是 - 对于每一行,在第25个字符处,它插入inserted text - 但是,我希望它在距文件起始位置的第25个偏移处完成。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是在RS中使用控制字符awk。这使整个文件成为awk的单个记录:

awk -v RS='\07' -v p=25 -v t='inserted text' '{
      print substr($0, 1, p) t substr($0, p+1)}' ORS= file

Hello World
How are you dinserted textoing today?
I'm good. Thanks for asking.