我有以下奇怪的问题.
我将尝试使用awk从文本文件中提取字符串,但在服务器上的bash上无法使用.
文本文件看起来像(textfile.txt)
dummy text name="formtoken" value="bd54839c3348d1c6ed7ab2c266f8a50b" dummy text
awk '/formtoken/ {match($0,/name="formtoken" value="(.{32})"/,arr); print arr[1]}' < textfile.txt
本地命令结果为“ bd54839c3348d1c6ed7ab2c266f8a50b”
在debian服务器上(通过ssh连接),我得到“ awk:第1行:在或附近出现语法错误”
谢谢,
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。