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
似乎ROW 2的内容重复了" 4ThresholdRsrp -140"。
我预期的输出:
LogicalChannelGroup=2 logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
ReportConfigA4=1$ a4ThresholdRsrp -140
答案 0 :(得分:5)
gensub
有4个参数gensub(regexp, replacement, how [, target])
您忘记提及目标,默认为$0
,但您需要$1
how
参数用于指定要替换的匹配项,例如:第二次匹配或第四次匹配(如sed 's///3'
),并接受"g"
或"G"
指定所有匹配
awk '{$1=gensub(/.*,/,"",1,$1);print}'
您在此处不需要gensub
,sub
将为找到的第一个匹配进行原位替换。 gsub
将对找到的所有匹配进行原位替换
awk '{sub(/.*,/,"",$1);print}'