awk:在两个字段之间用分隔符获取一些字段

时间:2012-03-01 17:36:59

标签: awk

我很好奇是否可以使用awk检索孤立的字段,还可以检索包含多个相邻字段和封闭分隔符的原始字符串的一部分?

例如,在

上使用awk时
foo.bar.baz.test

使用'.'分隔符,并告诉awk提取字段2和3,我希望能够检索

bar.baz

自动。我知道我可以手工重新构造字符串的一部分,但这感觉不对。

想法?

2 个答案:

答案 0 :(得分:2)

这可能对您有用:

echo foo.bar.baz.test | awk -F. -vOFS=. '{print $2,$3}'
bar.baz

打印命令中的,是输出字段分隔符(OFS)的简写。

答案 1 :(得分:2)

我不确定这是否是你想要的:

kent$  echo "foo.bar.baz.test"|awk  'BEGIN{FS=OFS="."}{print $2,$3}'
bar.baz

修改

  

我需要将它推广到未知数量的字段(没有硬编码   2美元,3美元,但一切从2美元开始直到结束 - 就是这样   可能的?)

见下面的测试:

kent$  echo "a.b.c.d.e.f.g.h.j.foo.bar"|awk 'BEGIN{FS=OFS="."}{for(i=2;i<=NF;i++)s=i==NF?s $i:s $i OFS;print s}'
b.c.d.e.f.g.h.j.foo.bar