gpt4 book ai didi

bash - 根据值删除 bash 中的行

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

我有这样一个文件:

1 4014 1.97676  1   1
1 4014 1.97676 2 1
1 4014 1.97676 3 1
1 2014 1.97676 4 1
1 2014 1.97676 5 1
1 401 1.97676 6 1
1 401 1.97676 7 1
1 401 1.97676 8 1
1 14 1.97676 9 1
1 14 1.97676 10 1

我想修剪这个文件:删除第 2 列中值 < 1000 的行。修剪后,文件应该如下所示:

1 4014 1.97676  1   1
1 4014 1.97676 2 1
1 4014 1.97676 3 1
1 2014 1.97676 4 1
1 2014 1.97676 5 1

如何在 bash 中实现这一点?我不想在 python 中这样做,尤其是在 pandas 中,因为它们处理大文件的速度很慢。

另一个问题是:如何在 .sh 文件中编写这样的 bash 命令(类似于 python 运行的 .py 文件)并在终端中运行该文件,如下所示:

$bash clean_file.sh inputfile.txt > outputfile.txt

非常感谢。



这是我想做的:

文件是这样的:

NODE_1_length_4014_cov_1.97676  1   1
NODE_1_length_4014_cov_1.97676 2 1
NODE_1_length_4014_cov_1.97676 3 1
NODE_1_length_4014_cov_1.97676 4 1
NODE_1_length_4014_cov_1.97676 5 1
NODE_1_length_4014_cov_1.97676 6 1
NODE_1_length_4014_cov_1.97676 7 1
NODE_1_length_4014_cov_1.97676 8 1
NODE_1_length_4014_cov_1.97676 9 1
NODE_1_length_4014_cov_1.97676 10 1

我想使用以下步骤清洁它:

#First, split the first column by the delimiter '_' and only keep the numbers:
awk -F '_' -v OFS='\t' '{print $2,$4,$6,$7,$8}'
#Second, remove the last two empty columns, because, after the first step, it generates two extra invisible columns, which need to be removed.
cut -f 1-5
#remove rows with values in the 2nd column less than 500
awk '$2 >= 500 { print }'

我没有在上面的脚本中添加'inputfile'和'outputfile',因为每个步骤都使用上一步的输出文件作为输入文件。我不知道如何将三个步骤组合在一个脚本文件中并将其保存在硬盘中。我想在终端中为存储在我计算机不同位置的文件运行它。

非常感谢!

最佳答案

bash 是错误的工具。

awk '$2 >= 1000 { print }'

关于bash - 根据值删除 bash 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900402/

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