gpt4 book ai didi

awk - 当最后一个字段中有 + 号时,awk 子命令输出的困难

转载 作者:行者123 更新时间:2023-12-04 02:55:00 26 4
gpt4 key购买 nike

friend 们:

我在向 awk 子命令传递最后一个字段中包含 + 符号的字符串时遇到问题。我试图在没有尾随字段分隔符的情况下输出记录中除最后一个字段之外的所有字段。例如:

echo "dog cat fish hamster" | awk 'sub(FS $NF, x)'

这会产生所需的“dog cat fish”输出

echo "dog cat fish +hamster" | awk 'sub(FS $NF, x)'

这会产生似乎没有输出的内容。

echo "dog +cat fish hamster" | awk 'sub(FS $NF, x)'

这也产生了“dog +cat fish”的预期输出

我正在使用 awk 来解析一个配置文件,其中包含一个或多个源目录和一个目标目录,用于使用 scp 传输文件。一些目标目录有一个 +,例如 /app/tgv+/in,由于遗留代码,我无法更改挂载点。该问题似乎仅在 + 出现在最后一个字段中时才会出现。如果您能帮助我确定我是否做错了什么,或者这是否只是 awk 字符串解析器的问题,我将不胜感激。非常感谢您的帮助。

数据中心

最佳答案

这里的问题是 sub() 的第一个参数应该是一个正则表达式。在大多数匹配绝对字符串的情况下,这并不麻烦。但在你的情况下FS $NF 将变为 +hamster ,它将被视为正则表达式,因此不会与任何内容匹配,因此不会打印任何内容。

即使您使用 {1}hamster 而不是 +hamster,也不会有任何输出。

更好的方法是改变方式。一个简单的方法可以是

echo "dog cat fish +hamster" | awk 'NF--'

关于awk - 当最后一个字段中有 + 号时,awk 子命令输出的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821680/

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