我有以下奇怪的问题。 我将尝试使用awk从文本文件中提取字符串,但它不能在我的服务器上使用bash。
Textfile看起来像(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:第1行:语法错误在或附近”,
也许有人对我有好的暗示:)
谢谢,
RCX
答案 0 :(得分:3)
基于Debian的发行版使用Mawk作为默认awk
,并且您的命令不适用于Mawk。
它适用于Gawk(GNU Awk),这可能就是你在本地安装的。
你的命令不适用于Mawk的原因是你正在使用match()
函数的 3 - 参数形式,这是Gawk扩展;功能签名是:
match(s, r [, a])
match(s, r)
Ed Morton,在清理后的评论中,建议使用以下命令变体,该变体应与所有 Awks一起使用:
awk 'sub(/.*name="formtoken" value="/,""){ sub(/".*/,""); print}' textfile.txt