gpt4 book ai didi

bash - Grep 不解析整个文件

转载 作者:行者123 更新时间:2023-11-29 09:29:18 25 4
gpt4 key购买 nike

我想使用 grep 在包含 425409 行、文件大小为 26.8 MB、UTF8 编码的文件中选择不包含“WAT”的行。

文件看起来像这样

>ATOM      1 N    ALA     1       9.979 -15.619  28.204  1.00  0.00  
>ATOM 2 H1 ALA 1 9.594 -15.053 28.938 1.00 0.00
>ATOM 3 H2 ALA 1 9.558 -15.358 27.323 1.00 0.00
>ATOM 12 O ALA 1 7.428 -16.246 28.335 1.00 0.00
>ATOM 13 N HID 2 7.563 -18.429 28.562 1.00 0.00
>ATOM 14 H HID 2 6.557 -18.369 28.638 1.00 0.00
>ATOM 15 CA HID 2 8.082 -19.800 28.535 1.00 0.00
>ATOM 24 HE1 HID 2 8.603 -23.670 33.041 1.00 0.00
>ATOM 25 NE2 HID 2 8.012 -23.749 30.962 1.00 0.00
>ATOM 29 O HID 2 5.854 -20.687 28.537 1.00 0.00
>ATOM 30 N GLN 3 7.209 -21.407 26.887 1.00 0.00
>ATOM 31 H GLN 3 8.168 -21.419 26.566 1.00 0.00
>ATOM 32 CA GLN 3 6.271 -22.274 26.157 1.00 0.00

**16443 lines**

>ATOM 16425 C116 PA 1089 -34.635 6.968 -0.185 1.00 0.00
>ATOM 16426 H16R PA 1089 -35.669 7.267 -0.368 1.00 0.00
>ATOM 16427 H16S PA 1089 -34.579 5.878 -0.218 1.00 0.00
>ATOM 16428 H16T PA 1089 -34.016 7.366 -0.990 1.00 0.00
>ATOM 16429 C115 PA 1089 -34.144 7.493 1.177 1.00 0.00
>ATOM 16430 H15R PA 1089 -33.101 7.198 1.305 1.00 0.00
>ATOM 16431 H15S PA 1089 -34.179 8.585 1.197 1.00 0.00
>ATOM 16432 C114 PA 1089 -34.971 6.910 2.342 1.00 0.00
>ATOM 16433 H14R PA 1089 -35.147 5.847 2.166 1.00 0.00

**132284 lines**

>ATOM 60981 O WAT 7952 -46.056 -5.515 -56.245 1.00 0.00
>ATOM 60982 H1 WAT 7952 -45.185 -5.238 -56.602 1.00 0.00
>ATOM 60983 H2 WAT 7952 -46.081 -6.445 -56.561 1.00 0.00
>TER
>ATOM 60984 O WAT 7953 -51.005 -3.205 -46.712 1.00 0.00
>ATOM 60985 H1 WAT 7953 -51.172 -3.159 -47.682 1.00 0.00
>ATOM 60986 H2 WAT 7953 -51.051 -4.177 -46.579 1.00 0.00
>TER
>ATOM 60987 O WAT 7954 -49.804 -0.759 -49.284 1.00 0.00
>ATOM 60988 H1 WAT 7954 -48.962 -0.677 -49.785 1.00 0.00
>ATOM 60989 H2 WAT 7954 -49.868 0.138 -48.903 1.00 0.00

**many lines until the end**

>TER
>END

我使用了 grep -v 'WAT' file.txt 但它只返回了不包含“WAT”的前 16179 行,我可以看到还有更多行不包含“WAT” .例如,以下行(以及许多其他行)不会出现在输出中:

> ATOM  16425 C116 PA   1089     -34.635   6.968  -0.185  1.00  0.00

为了弄清楚发生了什么,我尝试了 grep ' ' file.txt。此命令应返回文件中的每一行,但它也只返回前 16179 行。我也尝试过使用 tail -408977 file.txt | grep ' ' 它返回了 tail 召回的所有行。然后我尝试了 tail -408978 file.txt | grep ' ' 并且输出完全是空的,零行。我正在开发一个“普通”的 64 位系统,Kubuntu。非常感谢您的帮助!

最佳答案

当我尝试时,我得到了

$: grep WAT file.txt
Binary file file.txt matches

grep 假设它是一个二进制文件。添加-a

-a, --text equivalent to --binary-files=text

$: grep -a WAT file.txt|head -3
ATOM 29305 O WAT 4060 -75.787 -79.125 25.925 1.00 0.00 O
ATOM 29306 H1 WAT 4060 -76.191 -78.230 25.936 1.00 0.00 H
ATOM 29307 H2 WAT 4060 -76.556 -79.670 25.684 1.00 0.00 H

Your file has 2 NULLs each at the end of lines 16426, 16428, 16430, and 16432.

$: tr "\0" @ <file.txt|grep -n @
16426:ATOM 16421 KA CAL 1085 -20.614 -22.960 18.641 1.00 0.00 @@
16428:ATOM 16422 KA CAL 1086 20.249 21.546 19.443 1.00 0.00 @@
16430:ATOM 16423 KA CAL 1087 22.695 -19.700 19.624 1.00 0.00 @@
16432:ATOM 16424 KA CAL 1088 -22.147 19.317 17.966 1.00 0.00 @@

关于bash - Grep 不解析整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50992292/

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