Bash awk gensub函数使用问题

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 '{$

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

我的代码:

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}'