在 Linux 中搜索第一次出现的关键字 + 打印下一列

Say*_*Roy 2 awk

假设我有一个这样的文件:

d,e,c,g,v,c,w,r
g,c,d,c,s,c,g,r
d,y,c,w,t,g,c,f
Run Code Online (Sandbox Code Playgroud)

现在我想打印出现在每行第一个“c”之后的列(没有逗号分隔符)。所以我的输出看起来像这样

g
d
w
Run Code Online (Sandbox Code Playgroud)

我试过代码:

awk -F"," '{for (i=1;i<=NF;i++) if ($i == "c") {print $(i+1)};}' filename
Run Code Online (Sandbox Code Playgroud)

但是在输出中,我得到了出现在每个“c”之后的列。我只想要出现在第一个 'c' 之后的列。如何解决问题最好使用awk

提前致谢

Léa*_*ris 6

一个sed解决方案:

sed -n 's/[^c]*c,\([^,]\).*/\1/p' filename
Run Code Online (Sandbox Code Playgroud)

RegEx101 运行这个


Mic*_*alH 5

使用 awk 关键字next在每行第一个找到“c”后跳到下一行:

$ awk -F"," '{for (i=1;i<=NF;i++) if ($i == "c") {print $(i+1);next};}' filename
g
d
w
Run Code Online (Sandbox Code Playgroud)