在Bash中如何用一列取值拆分另一列字符串并过滤输出目标结果
解决方案
直接用awk一行命令即可实现需求,代码如下:
awk '{split($2, arr, ","); res = arr[$3]; if(res !~ /\*/) print $1, res}' input.txt
如果你的输入表格是严格制表符分隔、需要输出也保留制表符格式,可以指定字段分隔符:
awk 'BEGIN{FS=OFS="\t"} {split($2, arr, ","); res = arr[$3]; if(res !~ /\*/) print $1, res}' input.txt
实现逻辑
- 用
split函数把第二列按英文逗号切割为数组arr - 按第三列的序号从数组中提取对应字段存入
res - 判断提取结果是否包含
*,不包含的话输出第一列和提取结果
经测试该命令输出完全匹配你给出的预期结果。
内容的提问来源于stack exchange,提问作者benson23
相关产品推荐
相关产品推荐

