【发布时间】:2019-10-20 20:00:36
【问题描述】:
我是 shell 脚本的新手,我正在阅读一个脚本,但我不了解使用 gawk 命令的函数。
awk_egrep () {
local pattern_string=$1
gawk '{
while ($0) {
start=match($0, pattern);
token=substr($0, start, RLENGTH);
print token;
$0=substr($0, start+RLENGTH);
}
}' pattern="$pattern_string"
}
当我开始阅读 GNU awk 手册时,它写道如果程序很短,最容易 将它包含在运行 awk 的命令中,如下所示: awk 'program' input-file1 input-file2 ...
我的问题:作者何时写作 模式="$pattern_string" 他是在使用变量而不是文件吗? 搜索时我发现要使用变量,我们可以使用这样的管道 回声“$var1”|啊。
【问题讨论】:
-
是的,
awk的定义是可变的(请参阅这篇文章本身的所有答案)。请务必提及您的完整要求以及输入和预期输出,因为恕我直言,您的脚本肯定会更容易(与当前看起来很复杂的脚本相比)。让我们知道。 -
如果我不理解您的评论,您需要有关脚本的更多信息。我通过阅读github.com/dominictarr/JSON.sh/blob/master/JSON.sh 下面的脚本来学习 shell 脚本。它用于解析json文件,该函数由函数tokenize()使用
-
不推荐使用 awk 解析 JSON 这些答案有助于您理解脚本,您可以打开一个新线程,以防您需要使用实际用于解析 JSON 的工具。
-
最终目的是学习 shell 脚本,我没有任何用 awk 解析 JSON 的意图。谢谢你的帮助。现在对我来说功能更清楚了