AWK:如何在某个字段中的2个逗号之间提取单词

时间:2016-07-12 19:36:55

标签: awk

我有一个看起来像这样的文件:

name.com,168fcade-fc3d-425e-b67d-7176c80122f6,system,1034567,Red Hat Enterprise Linux Server, Standard (Physical or Virtual Nodes),

我需要在以Red Hat开头的2个逗号之间提取部分,或者只是Red,以便我的输出只是:

Red Hat Enterprise Linux Server

我已经尝试过这个并且接近但是无法实现它。

awk 'match($0,/,[^Red]*,/) {print substr($0,RSTART+1,RLENGTH-2)}' file

这将在我想要的字段之前打印字段中的逗号。

1034567

我想我错过了一些简单但我无法弄清楚的事情。

2 个答案:

答案 0 :(得分:1)

awk -F, '{print $5}' file

另外,请注意当你写道:

match($0,/,[^Red]*,/)

您指定了一个括号表达式([...]),其中包含一个否定的^)字符列表(Red = Re或{ {1}})重复零次或多次。因此正则表达式正在寻找除R,e或d之外的任何字符。它不寻找与字符串“Red”相关的任何内容,我认为这是你想要表达的内容。我怀疑你是想写这个:

d

答案 1 :(得分:1)

如果该位置不知道,这也有效......

$ awk -v RS=, '/^Red/' file

Red Hat Enterprise Linux Server
相关问题