gpt4 book ai didi

bash - 检查特定列中的单词,检查该行其他列中的值,将该行剪切并粘贴到新的文本文件

转载 作者:行者123 更新时间:2023-12-01 22:34:30 27 4
gpt4 key购买 nike

我的文本文件包含约 20k 行,如下所示:

文件_A:

ATOM    624  SC1 SER   288      54.730  23.870  56.950  1.00  0.00
ATOM 3199 NC3 POP 487 50.780 27.750 27.500 1.00 3.18
ATOM 3910 C2B POP 541 96.340 99.070 39.500 1.00 7.00
ATOM 4125 W PW 559 55.550 64.300 16.880 1.00 0.00

现在我需要检查第 4 列(第 2 行和第 3 行)中的 POP,并检查最后一列 (10) 中的值是否超过特定阈值(例如 5.00)。这些行——在本例中只是第 3 行——需要从 file_A 中删除并复制到新的 file_B。含义:

文件_A:

ATOM    624  SC1 SER   288      54.730  23.870  56.950  1.00  0.00
ATOM 3199 NC3 POP 487 50.780 27.750 27.500 1.00 3.18
ATOM 4125 W PW 559 55.550 64.300 16.880 1.00 0.00

文件_B:

ATOM   3910  C2B POP   541      96.340  99.070  39.500  1.00  7.00

我不确定是否要使用 sed、grep 或 awk 或任何结合它们的方法:/到目前为止,我可以只删除这些行并创建一个没有这些行的新文件...

awk '!/POP/' file_A > file_B

编辑:

以下是否适用于删除多个不同的词?

for (( i= ; i<$numberoflipids ; i++ ))
do
awk '$4~/"${nol[$i]}"/&&$NF>"$pr"{print >"patch_rmlipids.pdb";next}{print > "tmp"}' bilayer_CG_ordered.pdb && mv tmp patch.pdb
done

而 $nol 是一个包含要删除的单词的数组,$pr 是给定的阈值,而 .pdb 是使用的文件

最佳答案

awk '$4~/POP/&&$NF>5{print >"fileb";next}{print > "tmp"}' filea && mv tmp filea

.

$4~/POP/&&$NF>5  -Checks if fourth field contains POP and last field is more than five

{print >"fileb";next} -If they are writes the line to fileb and
skips further statements

{print > "tmp"} -Only executed if first part fails, write to tmp file

filea && mv tmp filea -The file used, if awk command succeeds then overwrite
it with tmp

关于bash - 检查特定列中的单词,检查该行其他列中的值,将该行剪切并粘贴到新的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26426130/

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