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
最佳答案
gensub
有 4 个参数 gensub(regexp, replacement, how [, target])
你忘了提到目标,默认是 $0
但你需要 $1
how
参数用于指定要替换的匹配项,例如:第 2 个匹配项或第 4 个匹配项(如 sed 's///3'
)以及接受 "g"
或 "G"
来指定所有匹配项
awk '{$1=gensub(/.*,/,"",1,$1);print}'
你在这里不需要 gensub
,sub
将对找到的第一个匹配项进行就地替换。 gsub
将对找到的所有匹配项进行就地替换
awk '{sub(/.*,/,"",$1);print}'
关于bash - awk gensub 函数使用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652654/