【问题标题】:awk gensub function usage issueawk gensub 函数使用问题
【发布时间】:2017-12-05 11:35:23
【问题描述】:
cat file

^QciProfilePredefined=qci2$ logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
EUtranCellTDD=.*-1[123456],UeMeasControl=1,ReportConfigA4=1$ a4ThresholdRsrp -140

我想使用gensub()删除$1中最后一个逗号之前的内容(同时删除逗号),不影响其他包含逗号的列。

我的代码:

awk '{$1=gensub(/.*,/,"",1);print}' file

输出:

LogicalChannelGroup=2 logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
ReportConfigA4=1$ a4ThresholdRsrp -140 a4ThresholdRsrp -140

似乎第2行的内容被“4ThresholdRsrp -140”重复了。

我期望的输出:

LogicalChannelGroup=2 logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
ReportConfigA4=1$ a4ThresholdRsrp -140

【问题讨论】:

    标签: bash shell awk sed


    【解决方案1】:

    gensub 有 4 个参数 gensub(regexp, replacement, how [, target])

    你忘了说目标,默认是$0但你需要$1

    how 参数用于指定要替换的匹配,例如:第二匹配或第四匹配(如sed 's///3')并且还接受"g""G" 以指定所有匹配

    awk '{$1=gensub(/.*,/,"",1,$1);print}'
    


    您在这里不需要gensubsub 将对找到的第一个匹配项进行就地替换。 gsub 将对找到的所有匹配项进行就地替换

    awk '{sub(/.*,/,"",$1);print}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2021-07-02
      • 2019-07-11
      • 1970-01-01
      相关资源
      最近更新 更多