gpt4 book ai didi

sed - 如何查找/修复带有混合行尾的文件 (0x0d 0x0d 0x0a)

转载 作者:行者123 更新时间:2023-12-04 15:37:28 42 4
gpt4 key购买 nike

我知道我可以通过使用“flip -u”(cygwin flip)来“可能”修复它们,这基本上删除了一个 0xd 的文件,其中一个带有 DOS 样式的行结尾(0x0d 0x0a)(当然,从技术上讲,这可能被认为是漏洞!)。

但另一方面,我想有选择地执行此操作,确保我正在修复的确实是一个“非二进制”文件,并明确地将 0x0d 0x0d 0x0a 序列替换为 0x0d 0x0a ... 不运行有问题的程序似乎可以做我想做的事(可能还有更多)。

请注意, grep -P '\x0d\x0d\x0a' 和 grep -P '\x0d\x0d' 找不到这些行。

尽管人们说 grep -P 'x0d\x0a' 正确地找到了行尾,但我不得不猜测还有其他事情正在发生,因为它无法匹配具有混合行尾的文件中的其他模式 (0x0d 0x0d 0x0a )。

最佳答案

这是识别包含混合行尾的文件的简单方法:

cat -A $FILE | grep '\^M\^M\$'
-A暗示 -v-E其中包括行尾和其他隐藏字符。例如,让我们创建一个测试文件。我将使用实际文本来与您将看到的行尾非常接近:
$ od -x test1.txt 
0000000 6464 2061 0d20 0a0d 6464 6161 2020 0d0d
0000020 0a0a 6164 2020 0a0d
0000030

现在让我们看看 cat 给了我们什么:
$ cat -vE test1.txt
dda ^M^M$
ddaa ^M^M$
$
da ^M$
cat确实向我们展示了 CR 和 LF(尽管 LF 没有出现在同一行上——这是有道理的),所以现在我们可以找到它们:
find /path -yourPredicatesOfInterest -print | while read fn ; do
cat -A $fn | grep '\^M\^M\$' > /dev/null 2>&1 && echo "$fn contains multiple CR CR LFs"
done

关于sed - 如何查找/修复带有混合行尾的文件 (0x0d 0x0d 0x0a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3773649/

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