我有一个看起来像这样的文件:
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
我想我错过了一些简单但我无法弄清楚的事情。
答案 0 :(得分:1)
awk -F, '{print $5}' file
另外,请注意当你写道:
match($0,/,[^Red]*,/)
您指定了一个括号表达式([...]
),其中包含一个否定的^
)字符列表(Red
= R
或e
或{ {1}})重复零次或多次。因此正则表达式正在寻找除R,e或d之外的任何字符。它不寻找与字符串“Red”相关的任何内容,我认为这是你想要表达的内容。我怀疑你是想写这个:
d
答案 1 :(得分:1)
如果该位置不知道,这也有效......
$ awk -v RS=, '/^Red/' file
Red Hat Enterprise Linux Server