我是 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 '程序' 输入文件1 输入文件2 ...
我的问题:当作者写作时 模式=“$pattern_string” 他使用变量而不是文件吗? 在搜索时我发现要使用变量我们可以使用像这样的管道 echo “$var1”| awk。
最佳答案
pattern="$pattern_string"
使用 bash 变量 pattern_string
的内容声明 awk 的变量 pattern
(此处为 $1
) >)。 awk 从标准输入而不是文件中读取。
而不是
gawk '...' pattern="$pattern_string"
您还可以使用:
gawk -v pattern="$pattern_string" '...'
关于shell - 是否可以通过 gnu awk 命令使用变量而不是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58472078/