gpt4 book ai didi

基于三列的 awk 子集文件方法

转载 作者:行者123 更新时间:2023-12-02 02:11:18 26 4
gpt4 key购买 nike

我有一个 .BED 格式的文件 (input.bed)

less input.bed
A 678 934 0bb6fdb5 0 +
A 715 986 8bc17666 0 +
A 716 1029 065f9d32 0 -
A 769 1367 572ae096 0 +
B 801 924 e6f469bf 0 +
B 876 1007 384622c7 0 +
B 921 1118 9f8bdbbb 0 -
C 1038 1841 f9a29a0g 0 +
C 1078 1929 9cd655be 0 +

我想从 LINUX 命令行对文件进行子集化,并生成一个新文件,其中包含第一列中包含“A”的所有行、第二列中的值大于 715 以及第二列中的值小于 1367。第三列。

我尝试使用 awk

awk -F '$1 == "A" && $2 >= 715 && $3 <= 1367' input.bed > output.bed

但我收到错误消息:

awk: cmd. line:1: input.bed
awk: cmd. line:1: ^ syntax error

所需的输出如下所示

less output.bed
A 715 986 8bc17666 0 +
A 716 1029 065f9d32 0 -
A 769 1367 572ae096 0 +

最佳答案

请尝试按照您显示的示例进行操作。假设您的 Input_file 是空格分隔的,那么我们不需要使用空格分隔符,因为这是 awk 的默认分隔符(在您尝试的代码中,没有为字段分隔符设置值会导致问题)。如果您使用制表符作为字段分隔符,则将以下代码中的 awk 更改为 awk 'BEGIN{FS=OFS="\t"}

awk '$1=="A" && $2>=715 && $3<=1367' Input_file

解释:简单的解释是,检查 2 个条件,如果第一个字段是 A,第二个字段大于或等于 715 并且第三个字段小于或等于到 1367 然后打印该行。一旦您对上面的代码感到满意(它将在终端上打印行),请附加 > output.bed 以从程序获取输出文件。

注意:对于 OP 的声明:

a value larger than 715 in the second column, and a value smaller than1367 in the third column.

如果我们不想包含 715 和 1367 值,则将条件更改为:

awk '$1=="A" && $2>715 && $3<1367' Input_file

关于基于三列的 awk 子集文件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67705592/

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