awk는 숫자를 문자열 끝으로 복사합니다.

awk는 숫자를 문자열 끝으로 복사합니다.

현재 내가 사용하고 있는

awk -F':' '{ j=$0; gsub(/[^0-9]+/,"",j); print $0 j }'

그러면 문자열의 모든 숫자가 복사되어 문자열 끝에 붙여넣어집니다. 예를 들면 다음과 같습니다.

입력 -

1Hello123

출력 -

1Hello1231123

하지만 문자열의 시작이나 중간이 아닌 끝 부분의 숫자만 복사하고 싶습니다.

따라서 이 경우 예상되는 결과는 다음과 같습니다.

1Hello123123

이 출력에서는 선행 1이 아직 복사되지 않았습니다.

또한 sed가 아닌 AWK를 사용하여 수행해야 합니다.

답변1

몇 가지 옵션이 있습니다:

$ echo 1Hello123 | awk '{sub(/[0-9]+$/,"&&",$0)} 1'
1Hello123123

또는

$ echo 1Hello123 | awk 'match($0,/[0-9]+$/) {print $0 substr($0,RSTART,RLENGTH)}'
1Hello123123

관련 정보