【发布时间】:2020-06-10 04:04:43
【问题描述】:
假设我有一个这样的文件:
d,e,c,g,v,c,w,r
g,c,d,c,s,c,g,r
d,y,c,w,t,g,c,f
现在我想打印出现在每行中第一个“c”之后的列(不带逗号分隔符)。所以我的输出看起来像这样
g
d
w
我已经尝试了代码:
awk -F"," '{for (i=1;i<=NF;i++) if ($i == "c") {print $(i+1)};}' filename
但在输出中,我得到了出现在每个“c”之后的列。我只想要出现在第一个 'c' 之后的列。 如何解决问题最好使用awk。
提前致谢
【问题讨论】:
-
使用
break.... -
... 终止 for 循环
print $(i+1); break -
如果 c 是最后一列怎么办?
-
您在主题中说
first occurrence of a keyword- 请注意“keyword”。如果您的真实数据和目标字符串中的列可以超过单个字符,那么更新您的示例以显示由于否定多字符字符串与否定单个字符是一个非常不同的问题,所以大多数答案都是这样远不适用。还包括一行没有c的情况,其中c是第一个字符,c是该行的最后一个字符。
标签: awk