【发布时间】:2021-05-18 19:47:55
【问题描述】:
我在下面有一个制表符分隔的文本文件。我想匹配第 2 列中的值并替换第 5 列中的值。条件是如果第 2 列中有 X 或 Y,我希望第 5 列有 1,就像下面的结果一样。
1:935662:C:CA 1 0 935662 0
1:941119:A:G 2 0 941119 0
1:942934:G:C 3 0 942934 0
1:942951:C:T X 0 942951 0
1:943937:C:T X 0 943937 0
1:944858:A:G Y 0 944858 0
1:945010:C:A X 0 945010 0
1:946247:G:A 1 0 946247 0
结果:
1:935662:C:CA 1 0 935662 0
1:941119:A:G 2 0 941119 0
1:942934:G:C 3 0 942934 0
1:942951:C:T X 0 942951 1
1:943937:C:T X 0 943937 1
1:944858:A:G Y 0 944858 1
1:945010:C:A X 0 945010 1
1:946247:G:A 1 0 946247 0
我尝试了awk -F'\t' '{ $5 = ($2 == X ? 1 : $2) } 1' OFS='\t' file.txt,但我不确定如何一步匹配 X 和 Y。
【问题讨论】:
-
@mattb 是的。我可以一次做一个,但不能同时匹配 X 和 Y。像
X|Y