awk模式中的条件匹配

时间:2018-08-22 07:55:05

标签: bash awk

我有一个带3个参数的awk脚本。前两个参数始终用于进行模式匹配。第三个应该是可选的。如果未通过,那么我要按照以下步骤进行匹配:

awk -v start=$start -v end=$end -v code=$code '
  start <= \$1 && \$1 < end {
  ...
  }'

如果通过了 ,那么我想按如下方式进行匹配:

awk -v start=$start -v end=$end -v code=$code '
  start <= \$1 && \$1 < end && code = $code {
  ...
  }'

我应该如何以awk模式表达此条件匹配?

1 个答案:

答案 0 :(得分:1)

您可以将此awk用于or条件:

awk -v start=$start -v end=$end -v code=$code '
  start <= $1 && $1 < end && (code == "" || code == "123") {
  ...
  }'

(code == "" || code == "123"):仅在code == "123"不为空时才检查条件code

也无需使用\$1