gpt4 book ai didi

awk - 在 AWK(或 GAWK)中,如何确定第 n 个单词从哪里开始?

转载 作者:行者123 更新时间:2023-12-04 22:18:50 25 4
gpt4 key购买 nike

例子:n=3,输入为

foo  bar    baz
a b c d e f g h
12 34 5 678

输出应该是:

13
5
8

最佳答案

最简单的可能是:

$ awk -v n=3 '{print index($0,$n)}' file
13
5
8

但它很容易出错,需要进行一些检查。 $n 是第三个单词(或由 FS 字段分隔符分隔的字段)。 index 返回该事件开始的字符位置。如果 FS 是默认的(空格然后是一些),您可能希望以一个空格开始并在该位置添加一个:

$ awk -v n=3 '{print 1 + index($0," " $n)}' file
13
5
8

...正如评论中指出的那样,n=1 或第 n 个单词与前一个单词的开头匹配时也容易出错。

我们可以使用 GNU awk 的 splitseps 功能:

$ awk -v n=3 '{
s=1 # reset s to 1
split($0,a,/ +/,b) # split to a and separators to b
for(i=1;i<n;i++) # iterate to n
s+=length(a[i] b[i]) # sum the lengths of a b
print s # print the position
}' file
13
5
8

关于awk - 在 AWK(或 GAWK)中,如何确定第 n 个单词从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431203/

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