Bash awk gensub函数使用问题
我想使用gensub()删除$1中最后一个逗号之前的内容(同时删除逗号),而不影响包含逗号的其他列 我的代码:Bash awk gensub函数使用问题,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我想使用gensub()删除$1中最后一个逗号之前的内容(同时删除逗号),而不影响包含逗号的其他列 我的代码: cat file ^QciProfilePredefined=qci2$ logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2 EUtranCellTDD=.*-1[123456],UeMeasControl=1,ReportConfigA4=1$ a4ThresholdRsrp -140 输出: awk '{$
cat file
^QciProfilePredefined=qci2$ logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
EUtranCellTDD=.*-1[123456],UeMeasControl=1,ReportConfigA4=1$ a4ThresholdRsrp -140
输出:
awk '{$1=gensub(/.*,/,"",1);print}' file
第2行内容似乎由“4ThresholdRsrp-140”重复
我期望的结果是:
LogicalChannelGroup=2 logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
ReportConfigA4=1$ a4ThresholdRsrp -140 a4ThresholdRsrp -140
gensub
有4个参数gensub(regexp,replacement,how[,target])
您忘记提到目标,默认值是$0
,但您需要$1
如何使用
参数指定要替换的匹配项,例如:第二个匹配项或第四个匹配项(如sed的///3'
),并且还接受“g”
或“g”
来指定所有匹配项
LogicalChannelGroup=2 logicalChannelGroupRef QciTable=default,LogicalChannelGroup=2
ReportConfigA4=1$ a4ThresholdRsrp -140
您不需要在此处使用
gensub
,sub
将替换找到的第一个匹配项gsub
将对找到的所有匹配项进行就地替换
awk '{$1=gensub(/.*,/,"",1,$1);print}'
awk '{sub(/.*,/,"",$1);print}'