2017-12-05 12 views
3
cat file 

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

내가 쉼표가 영향 다른 열을하지 않고 $ 1 (도 쉼표를 삭제)의 마지막 쉼표 전에 내용을 삭제 gensub()를 사용하고 싶습니다.AWK gensub 기능 사용 문제

내 코드 :

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

출력 :

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

그것은 그 "4ThresholdRsrp -140"에 의해 반복 ROW이 콘텐츠를 보인다.

출력은 내가 예상 :

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

답변

5

gensub는, 기본이 $0 인 목표를 언급하는 것을 잊었다 4 개 인수

gensub(regexp, replacement, how [, target])을 가지고 있지만 $1

how 인수가 지정하는 데 사용됩니다해야하는 예 : 2 번째 경기 또는 4 번째 경기 (예 : sed 's///3')와 일치하여 교체 할 경기이며수락3210 또는 "G"는 모든

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


당신이 sub 발견 첫 경기에 대한 올바른 위치 대체 할 것, 여기 gensub 필요가 없습니다 일치 지정합니다. gsub은 찾은 모든 일치 항목을 대체로 대체합니다.

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