文件中的文本如下:
32 host1 dock0:network__cps-spr-adapter,network__cps-ocs-adapter
33 host2 dock2:custom-work__ccep-sep-adapter
34 host3 dock2:custom-work__gmsa-host,dock1:custom-work2
35 host4 dock2:eodprvg__subsactivity
我想解析文件的每一行,并想检索带有前缀ocker0 / dock1 / dock2的单词
在上面的文本中,我的预期输出是:
dock0:network__cps-spr-adapter
dock2:custom-work__ccep-sep-adapter
dock2:custom-work__gmsa-host
dock1:custom-work2
dock2:eodprvg__subsactivity
答案 0 :(得分:0)
使用awk只需获取第三个字段:
NAs
答案 1 :(得分:0)
awk '{ print $3; }' your-input-file | awk -F, '{
for (i = 1; i <= NF; i++) {
if ($i ~ /^dock[0-2]:/) print $i;
}
}'
根据您的输入产生以下输出。
dock0:network__cps-spr-adapter
dock2:custom-work__ccep-sep-adapter
dock2:custom-work__gmsa-host
dock1:custom-work2
dock2:eodprvg__subsactivity
更新:
Variant受@Cyrus的建议启发,该建议避免了流水线,并合并了@ sri-k的请求以匹配dock:
awk -F'[ ,]+' '{
for (i = 3; i <= NF; i++) {
if ($i ~ /^dock[0-2]?:/) print $i;
}
}' your-input-file
答案 2 :(得分:0)
这可能对您有用(GNU sed):
sed '/\n/!s/[^ ,]\+/\n&\n/g;/^dock[012]/P;D' file
将行分割成单个单词,并仅打印以dock
,0
或1
开头的单词。