有没有在线 awk 命令“解释器”?

有没有在线 awk 命令“解释器”?

首先,我不知道我应该在哪里问这个问题。如果这里不适合问这个问题,请告诉我正确的论坛。

我正在寻找一个可以解释 awk 命令的工具。

作为参考,请查看此网站:https://regexr.com/

当您将鼠标悬停在正则表达式部分时,它会向您解释它的作用。我正在寻找 awk 的相同功能(不需要是网站,只要我能获得信息,任何东西都可以)。

在此处输入图片描述

我需要“解密”的 awk 命令示例:

  awk -F"|" 'BEGIN{OFS="|"}{if(FNR>3){for(i=1;i<=NF;i++){sub(/ +$/,"",$i);sub(/^ +/,"",$i)};if(NF!=1){print $2,$3,$4}}}'

答案1

正如其他人所说,为 AWK 编程语言制作一个简单的工具(就像您为正则表达式语法找到的工具一样)非常困难。也许您能找到的最接近的工具是可以输入和运行 AWK 代码的网站,例如https://www.tutorialspoint.com/execute_awk_online.php

关于您的样本:

awk -F"|" 'BEGIN{OFS="|"}{if(FNR>3){for(i=1;i<=NF;i++){sub(/ +$/,"",$i);sub(/^ +/,"",$i)};if(NF!=1){print $2,$3,$4}}}'

那是:

awk [a command-line option] '[some AWK code]'

第一部分很简单——只需执行“ awk --help”(它告诉您“ -F fs”设置字段分隔符)。“一些 AWK 代码”部分更难。我建议对其进行美化是一个很好的步骤。您应该能够执行以下操作:

gawk --pretty-print=a.awk 'BEGIN{OFS="|"}{if(FNR>3){for(i=1;i<=NF;i++){sub(/ +$/,"",$i);sub(/^ +/,"",$i)};if(NF!=1){print $2,$3,$4}}}'

我刚刚试过了。它只是呆在那里,尽管更简单的,例如“ gawk --pretty-print=a.awk 'BEGIN{a=3}'”就可以正常工作。AC 美化器就像https://codebeautify.org/c-formatter-beautifier会让你非常接近,所以你的代码示例是:

BEGIN {
  OFS = "|"
}

{
  if (FNR > 3) {
    for (i = 1; i <= NF; i++) {
      sub(/ +$/, "", $i);
      sub(/^ +/, "", $i)
    };
    if (NF != 1) {
      print $2, $3, $4
    }
  }
}

现在应该更容易理解了。您可以更清楚地看到有两个主要块:“BEGIN”和一个未命名的块。

然后转到https://www.gnu.org/software/gawk/manual/gawk.html(或者在网上搜索“awk manual”,它很可能会返回第一个结果)如果您刚刚开始使用,“awk 入门”部分会很有帮助。在前几段中,您将了解到未命名的块会针对输入文本的每一行执行,并且有可选的 BEGIN 和 END 块只运行一次。

您可能必须在该网页上使用 control-F 来查找诸如 FNR(它告诉您当前文件中正在处理的行数)和 NF(当前行上的字段数)之类的内容。

相关内容