我应该如何在 awk 中使用 if-else 语句?

Posted

技术标签:

【中文标题】我应该如何在 awk 中使用 if-else 语句?【英文标题】:How should I use if-else statement in awk? 【发布时间】:2022-01-19 20:44:53 【问题描述】:

我正在用 bash 编写一个解析器,其中每行都有一个带有一个“:”的文本,如果冒号之前的部分与单词“txt”匹配,我需要输出冒号之后的部分。

所以我用“:”分割了文本的行,然后尝试在 awk 中使用 if 语句。

我尝试过的命令:

echo "txt:hello" | awk -F: 'if [[ $1="txt" ]] then print $2 fi' 

但这导致了 if 语句中的语法错误,所以我想知道 awk 的 if-else 构造是否与基本 bash 不同?

【问题讨论】:

请用awk if statement这个词咨询您最喜欢的互联网搜索引擎。 echo "txt:hello" | awk -F ':' ' if($1=="txt") print $2 else print "world" ' echo "txt:hello" | awk -F: '$1=="txt"print $2' 【参考方案1】:

在 awk 中使用 if 语句。

AWK 不是 Bash。 AWK 语法更像 C 风格。

awk -F: 'if ($1 == "txt") print $2'

或者只是:

awk -F: '$1 == "txt"print $2'

参见https://www.gnu.org/software/gawk/manual/gawk.html#Getting-Started 和https://www.gnu.org/software/gawk/manual/gawk.html#Very-Simple。

【讨论】:

以上是关于我应该如何在 awk 中使用 if-else 语句?的主要内容,如果未能解决你的问题,请参考以下文章

四.AWK分支和循环

如何在标准 Bigquery 中使用 if-else 语句?

if-else 语句来计算一些变量

HTML/PHP if-else 语句

如何在没有错误的情况下制作if-else语句?

java 8 不可达语句 switch case 语句