首页 > 解决方案 > 基于过滤器在awk中打​​印列的子字符串

问题描述

我有一个字符串如下,用逗号分隔

2019-08-3123:10:38,abcd:343:334334,v1-customer,{Ad=299:ADT=1}:{ADpif=10:DDI=299},abd-fed,568:3433

我需要在过滤器“:”上包含所有字符串,但只有第 4 列的子字符串,因此输出应如下所示

2019-08-3123:10:38,abcd:343:334334,v1-customer,{ADpif=10:DDI=299},abd-fed,568:3433

我尝试使用子字符串,但它需要不固定的起始索引,因此无法继续。

谢谢

标签: shellunixawksed

解决方案


您需要分离列,修剪特定列(第 4 列)并再次将它们连接在一起。AWK 语法有点复杂

echo 'aaaa,b1234,cccc' | awk  -F, -v OFS=, '{ $2=substr($2,2,2); print $0 }'

印刷

aaaa,12,cccc

-F输入字段分隔符设置为逗号,-v OFS=,将输出字段分隔符设置为逗号。$0指整行,而$2指第二个字段。事实证明,这些$<n>变量是可变的,因此您可以进行变异$2,然后使用$0.


推荐阅读