如何使用AWK提取逗号分隔文本中第三个字段及之后的完整内容
AWK命令修正方案
错误原因
- 原命令未指定逗号为字段分隔符,awk默认按空白符分割字段,导致
211,sname被识别为同一个字段,从i=2开始输出时直接丢失了sname前缀。 - 即使添加逗号分隔符参数,原循环逻辑也没有处理条件语句内部的逗号,会导致输出格式错乱。
最优实现命令
awk '{sub(/^([^,]+,){2}/,""); print}' 你的输入文件名
命令说明
- 正则
^([^,]+,){2}匹配行开头连续2组「非逗号字符+逗号」的组合,刚好对应需要删除的前两个数值字段和后续分隔逗号 sub()函数将匹配到的内容替换为空,剩余内容就是完整带字段名的条件语句,天然保留语句内部的所有逗号和空格,完全符合预期输出要求。
内容的提问来源于stack exchange,提问作者RebeA
相关产品推荐
相关产品推荐

