gpt4 book ai didi

string - 使用 awk 提取和拆分

转载 作者:行者123 更新时间:2023-11-29 09:12:10 25 4
gpt4 key购买 nike

我正在尝试使用 awk 从 bash 中的命令答案中提取子字符串

示例输出行:abc_def_ghi jkl_lmn_opq

得到第二部分很容易

echo abc_def_ghi jkl_lmn_opq | awk '{print $2}'

但我只需要最后一部分子字符串“opq”并且没有找到让 awk 在字符串上运行两次的方法,当我将结果从上面传递给 var 并将此 var 用于第二个 awk 我得到一个错误,因为字符串是路径,因此是目录。我也没有让 sed 在使用字符串存储的 var 上使用时遇到相同的错误,并且我没有设法将第一个子字符串传递给第二个 awk 或 sed。诡异的?

如果不是第一个 awk 将打印出来而不是传递给第二个 awk,这将完成工作

echo abc_def_ghi jkl_lmn_opq | awk '{print $2}' | awk -F"_" '{print $3}'

两个都不行

echo abc_def_ghi jkl_lmn_opq | awk '{$2}' | awk -F"_" '{print $3}'

我怎样才能把它传递给二次剥离?

最佳答案

这应该有效:

$ echo abc_def_ghi jkl_lmn_opq | awk -F_ '{ print $NF}'
opq

NF 是一个内置变量,用于存储字段数。当您用 _ 拆分行并告诉 awk 打印 $NF 时,您将打印最后一个字段。

但是,您可能并不总是需要字符串的最后一部分。在这种情况下,您可以在 awk 中使用 substr 函数。

使用同样的例子,你可以这样做:

$ echo abc_def_ghi jkl_lmn_opq | awk ' { print substr($2,9) }'
opq

substr 函数有 3 个参数,第三个是可选的。第一个参数是有问题的字符串。第二个参数是起点,第三个(可选)参数是您要捕获的长度。如果您不提供它,那么默认情况下它将捕获所有内容,直到字符串结束。

关于string - 使用 awk 提取和拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932335/

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