我应该如何在 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 语句?的主要内容,如果未能解决你的问题,请参考以下文章