shell - 如何在awk中对模式进行if else匹配

标签 shell awk grep

我试过下面的命令:

awk '/search-pattern/ {print $1}'
如何为上述命令编写 else 部分?

最佳答案

Classic way:

awk '{if ($0 ~ /pattern/) {then_actions} else {else_actions}}' file
$0表示整个输入记录。

Another idiomatic way
基于三元运算符语法 selector ? if-true-exp : if-false-exp
awk '{print ($0 ~ /pattern/)?text_for_true:text_for_false}'
awk '{x == y ? a[i++] : b[i++]}'

awk '{print ($0 ~ /two/)?NR "yes":NR "No"}' <<<$'one two\nthree four\nfive six\nseven two'
1yes
2No
3No
4yes

关于shell - 如何在awk中对模式进行if else匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754844/

相关文章:

xml - 从 unix 命令行进行基本 xml 解析的最简单方法

xml - 如何使用 grep 在 xml 标记中查找信息?

linux - 如何仅从 grepping 返回特定文本

bash - 我刚刚分配了一个变量,但 echo $variable 显示了其他内容

linux - 有没有办法按列 'uniq'?

perl - 删除全为零的行和列

regex - awk 的多个正则表达式

regex - 用于在文本文件中搜索列的正则表达式

bash - 从 cron 执行时 shell 脚本中的数据库连接失败

bash - 在容器内运行 shell 脚本