【问题标题】:How should I use if-else statement in awk?我应该如何在 awk 中使用 if-else 语句?
【发布时间】: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}'

标签: if-statement awk


【解决方案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-Startedhttps://www.gnu.org/software/gawk/manual/gawk.html#Very-Simple

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多