gpt4 book ai didi

linux - AWK 匹配在本地工作但不在 debian 服务器上的 bash 中

转载 作者:太空狗 更新时间:2023-10-29 11:07:59 25 4
gpt4 key购买 nike

我有以下奇怪的问题。我将尝试使用 awk 从文本文件中提取字符串,但它无法在我的服务器上的 bash 上运行。

文本文件看起来像 (textfile.txt)

dummy text name="formtoken" value="bd54839c3348d1c6ed7ab2c266f8a50b" dummy text

我想从文件中提取 formtoken 值。我的 awk 语句是:

awk '/formtoken/ {match($0,/name="formtoken" value="(.{32})"/,arr); print arr[1]}' < textfile.txt

本地命令结果是“bd54839c3348d1c6ed7ab2c266f8a50b”

在 debian 服务器上(通过 ssh 连接)我得到“awk: line 1: syntax error at or near ,”

也许有人对我有很好的提示:)

谢谢,

RCX

最佳答案

基于 Debian 的发行版使用 Mawk作为默认的 awk,您的命令不适用于 Mawk。

它适用于 Gawk (GNU Awk),这可能是您在本地安装的。

您的命令不适用于 Mawk 的原因是您正在使用 match() 函数的 3 参数形式,它是 Gawk 扩展;函数签名是:

  • Gawk:匹配(s, r [, a])
  • Mawk(以及 BSD Awk 和 POSIX):match(s, r)

Ed Morton ,在清理后的评论中,建议使用以下命令变体,它应该适用于所有 Awks:

awk 'sub(/.*name="formtoken" value="/,""){ sub(/".*/,""); print}' textfile.txt

关于linux - AWK 匹配在本地工作但不在 debian 服务器上的 bash 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35208111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com