我想替换文件页眉和页脚中的某些字符。如果要说,我想替换第5到第9个字符怎么办?我需要使用bash或shell命令。
我想做这样的事情
s="abcdabcd"
s=s=s[0]+"12"+s[4:]
>a12dabcd
我有一个可以替换的确切长度的字符串,以及替换的开始和结束。我想将生成的替换项放回文件中。
示例:
我有这个标题:
HEADER 22aabbccdd23aabbccdd
我得到这些开始和结束索引:2,10
我得到以下字符串:xyz56789
我想要这个:HEADER 22xyz5678923aabbccdd
替换文件中现有的第一行。
答案 0 :(得分:0)
这可以通过Perl完成:
perl -i -lpe 'if ($. == 1 || eof) { substr($_, 1, 2) = "12" }' input.txt
-i
:就地修改文件-l
:自动从输入中去除换行符并将其重新添加到输出中-p
:遍历输入文件的各行,然后将它们打印出来-e CODE
:每行要做什么首先,我们检查当前行号($.
)是否为1(即我们正在处理文件的第一行)还是到达文件的末尾(即当前正在处理的行是文件的最后一行)。如果条件为真,则从长度2的偏移量1开始,获取当前行($_
)的子字符串,并将其设置为"12"
。
答案 1 :(得分:0)
仅使用sed
:
input.txt:
$ cat input.txt
22aabbccdd23aabbccdd
asasdfsdfd234234234234
$ sed -Ei '1 s/(..).{8}/\1xyz56789/' input.txt
结果:
22xyz5678923aabbccdd
asasdfsdfd234234234234