linux - 如何在使用 awk 不匹配时添加行结果“non_assigned”?
问题描述
当我在输入文件 (input.txt) 的一行上运行命令 (COMMAND) 时,我会得到一个相关的结果,其中只有一行是有趣的,总是从世界门开始。
例如:
superkingdom 2759 Eukaryota
clade 554915 Amoebozoa
phylum 555280 Discosea
order 313555 Himatismenida
family 313556 Cochliopodiidae
所以我跑:
for p in $(cat input.txt)
do COMMAND $p | grep "\bphylum\b" >> results.txt
done
为了在我的文件 result.txt 中包含所有行,例如:
phylum 555280 Discosea
但是,有时 grep 没有结果(没有以 phylum 开头的行),并且它不会在 results.txt 中添加任何行。例如,我想为这些特定情况添加一些带有“0”或“未分配”的行(因此 input.txt 的每一行都与 results.txt 匹配)。
clade 2696291 Ochrophyta
class 5747 Eustigmatophyceae
order 425074 Eustigmatales
family 425072 Monodopsidaceae
我已经尝试添加 | awk print '{print $0"non_assigned"}' ,不成功。
你有什么想法可以帮助我吗?一位成员建议我使用 awk '/phylum/{print $0}!/phylum/{print "non_assigned";exit} 但即使存在门结果,我也会得到输出“non_assigned”。
解决方案
像这样?:
$ grep phylum file || echo "non assigned"
在文件中找到门时输出:
phylum 555280 Discosea
当没有找到时:
non assigned
在 awk 中相同:
$ awk '/phylum/&&found=1;END{if(!found)print "non assigned"}'
推荐阅读
- syntax - 有没有办法让 GAMS 中断并从它持续的地方重新运行?
- powerapps - 我们可以像 Power Apps 一样将 Power Apps 门户发布到应用程序源吗?
- javascript - UnhandledPromiseRejectionWarning: TypeError: undefined is not a function
- c# - 在自定义目录 .NET Core 中获取特定视图
- javascript - 重置 AJAX/模态数据 (PHP Codeigniter)
- angular - 物料表没有获取行标题和列动态的任何示例
- sql - Oracle 11g 报表查询
- wordpress - 如何在预定的时间间隔内自动运行功能?
- java - 如何在 TabLayout 中包装单个选项卡宽度?
- php - 在 Sql Query 中包含动态数组索引