使用特定列中包含“1”值的行创建列表

使用特定列中包含“1”值的行创建列表

我需要制作 2 个文件,其中包含某些列中包含“1”的行列表​​ - 一个文件用于第 4 列“1”,一个文件用于第 5 列“1”。原始文件如下所示:

ID TreeID gC gD1 gD2.
36  1   0   0   0
36  2   1   0   0
36  3   1   0   0
36  4   1   0   0
36  5   1   0   0
36  6   0   0   1
36  7   1   0   0
36  8   1   0   0
36  9   1   0   0
36  10  1   0   0
36  11  1   0   0

我在想这样的事情:

awk '$4%1' branch_36.cf.stat_tree.txt > gDF1_trees.txt

但我无法让它发挥作用。我的输出看起来像(希望如此):

36  18  0   0   1
36  45  0   0   1
36  50  0   0   1
36  79  0   0   1

对于gDF2_trees.txt和:

36  22  0   1   0
36  101 0   1   0
36  507 0   1   0
36  632 0   1   0

为了gDF1_trees.txt

答案1

您是否考虑过更改第四列?

sed -E 's/^(([^ ]* ){3})[^ ]* (.*$)/\11 \3/g'

只需将大括号内的“3”更改为4,即可更改第5列。

答案2

弄清楚了!

awk -F ' '  '$4 + 0 ==1' branch_36.cf.stat_tree.txt > gDF1_trees.txt

相关内容