gpt4 book ai didi

linux - sed 命令替换特定字节位置的字符

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:06 24 4
gpt4 key购买 nike

我有两个文件说 test1 和 test2 在某个随机位置有差异。所以我想搜索 test1 与 test 2 不同的字符位置,并想在 test 1 中用 * 替换它。但是约束是只知道 char 的位置而不知道 char。因此,我尝试使用 cmp -b 来获取不同的字节位置,但无法在 sed 或任何可以在字节位置替换 char 的位置或比较中的某些内容来给出行号。以及行中不同的字符位置。所以任何帮助(主要限制是不能替换为 char 值,因为不希望在文件中的其他位置进行更改,只希望在该位置进行更改)。 sed 第一次出现替换也将不起作用,因为第一次出现可能在 differ 位置之前。

最佳答案

所以你只想在不截断文件的情况下在某个偏移处写入一些字节,也许 dd 会有帮助?

设置:

$ cat f1
aaaaaaaaaaaaaaaaaaaaaaaaa
$ cat f2
aaaaaaaaaaaaaaabaaaaaaaaa

脚本:

if ! CMPOUT=`cmp -b f1 f2`; then
POS=`echo "$CMPOUT" | sed -r 's/^.*: byte ([0-9]+),.*$/\1/'`
echo -n '*' | dd of=f2 seek="$((POS-1))" bs=1 count=1 conv=notrunc
fi

结果:

$ cat f2 
aaaaaaaaaaaaaaa*aaaaaaaaa

关于linux - sed 命令替换特定字节位置的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com