根据列中是否有某个单词提取行

Extract rows based on if a column has a certain word in it

提问人:Amy Houseman 提问时间:11/17/2023 最后编辑:Amy Houseman 更新时间:11/17/2023 访问量:65

问:

我正在尝试根据单词“Deleterious”以及某个列中是否出现“.”来提取制表符分隔表中的行 - 我知道如何用数字做到这一点,但我有点卡在单词上 - 我不能使用 grep 来只使用 grep “Deleterious”,因为其他列也可能有这个词 - 任何人都可以帮忙!谢谢(在 bash 中)

对于数字,我有这个适用于等于或低于 0.01 的数字,但我无法弄清楚如何更改字符的它:

awk 'NR ==1 { print } NR != 1 && $45 <= 0.01 {print} file.txt > 0.01file.txt

谢谢! 艾米

我不知道如何插入表格,所以这里是输入示例:

enter image description here

这是我想要的示例(仅看到有害的,SIFT列中的点仍然存在)enter image description here

这是一个制表符分隔的表格 - 刚刚在 excel 中打开以显示给您。不好意思!

哎呀呀

评论

3赞 RavinderSingh13 11/17/2023
请在您的问题中添加输入和预期输出的样本,以使其清晰,谢谢。
1赞 jhnc 11/17/2023
如果输入是制表符分隔的,则应进行设置,否则其他类型的空格将创建意外的额外字段。您的字段可以包含带引号/嵌入的选项卡吗?-F'\t'
1赞 jhnc 11/17/2023
要比较文本,您可以进行精确的字符串比较(例如。 / ) 或正则表达式匹配(例如。$123=="deleterious"$56=="."$123 ~ /deleterious/ / $56 ~ /[.]/)
0赞 Amy Houseman 11/17/2023
谢谢!!此代码适用于有害的: awk 'NR==1 { print } NR != 1 && $45 ~ /deleterious/ {print}' inputfile.txt > outputfile.txt 我将尝试弄清楚我是否可以组合以保持有害和.条目
2赞 jhnc 11/17/2023
也许:awk 'NR==1 || $45 ~ /deleterious/ || $45=="."' input >output

答: 暂无答案