awk - 如何使用多个模式删除多个列?
问题描述
我有一个这样的文件(由 \t 分隔):
gene1 previous name1
gene2 previous name2
gene3 previous name3
gene4 previous name4
我想删除第一列中包含gene2和gene4的列。我知道我可以使用sed或awk和|搜索多个模式。但实际上我的文件有数千行,我想删除数百列(我有一个变量,其中包含我想要搜索的模式)。我怎样才能做到这一点而不必手动编写所有模式?
模式变量:
gene2
gene4
预期输出:
gene1 previous name1
gene3 previous name3
我只想 grep 第一列,因为单词gene2(或*gene4)可能在第三列中。
解决方案
使用grep
:
cat > in_file <<EOF
gene1 previous name1
gene2 previous name2
gene3 previous name3
gene4 previous name4
EOF
cat > pat_file <<EOF
gene2
gene4
EOF
grep -v -f pat_file in_file
输出:
gene1 previous name1
gene3 previous name3
在这里,grep
使用以下选项:
-v
:打印不匹配的行。:从文件
-f file
中获取模式,每行一个。
推荐阅读
- python - 如何在python中为单个函数或封闭的代码行禁止“UserWarning”
- c# - 为什么 ASP.NET Core MVC 添加的 Edit() 操作方法(POST)脚手架中的 ID 参数传递了两次?
- javascript - Javascript 排序列禁用第一行的向上箭头和最后一行的向下箭头
- sql - 如何在 t-sql 中的 where 条件下转换并转换为日期时间?
- c# - 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))'防火墙 INetFwPolicy2
- xml - 如何进行结构匹配以检查 xml 中的可选元素(子树)
- reactjs - React-bootstrap findDOMNode 在 StricMode 错误中被弃用
- intellij-idea - Thymeleaf 解析器级注释块的 IntelliJ 快捷方式
- linux - 执行 ps -ef 时如何在启动过程中获得年份
- c# - 使用 Photon PUN2/Unity 选择字符