awk에 aplha 숫자 필드를 추가하는 방법

awk에 aplha 숫자 필드를 추가하는 방법

M152DHD3H4M2의 수를 늘리고 싶습니다.

다음과 같은 출력

M152DHD3H4M3
M152DHD3H4M4
M152DHD3H4M5
M152DHD3H4M6

답변1

방법 1: 각 문자를 별도의 필드로 처리

$ echo 'M152DHD3H4M2' | awk -F "" '{for(i=1;i<=4;i++) {$NF++;print}}' OFS=
M152DHD3H4M3
M152DHD3H4M4
M152DHD3H4M5
M152DHD3H4M6

-F ""입력의 각 문자를 별도의 필드로 처리하도록 awk에 지시하고 OFS=출력에 필드 구분 기호를 추가하지 않도록 awk에 지시합니다. 그런 다음 필요에 따라 마지막 필드를 추가합니다.

$NF++마지막 필드의 값을 증가시킵니다.

POSIX에서는 이러한 널 필드 구분 기호가 필요하지 않지만 최소한 GNU awk 및 mawk는 이를 지원합니다.

방법 2: M필드 구분 기호 로 사용

$ echo 'M152DHD3H4M2' | awk -FM '{for(i=1;i<=4;i++) {$NF++;print}}' OFS=M
M152DHD3H4M3
M152DHD3H4M4
M152DHD3H4M5
M152DHD3H4M6

-FM그리고 awk에게 OFS=M입력과 출력의 M필드 구분 기호 로 사용하도록 지시합니다. 그런 다음 필요에 따라 마지막 필드를 추가합니다.

방법 3: 다음을 사용하여 문자열을 여러 부분으로 분할합니다.substr

$ echo 'M152DHD3H4M2' | awk '{for(i=1;i<=4;i++) print substr($1, 1, length($1)-1) i+substr($1, length($1))}'
M152DHD3H4M3
M152DHD3H4M4
M152DHD3H4M5
M152DHD3H4M6

여기서는 부분 문자열 함수를 사용하여 입력 줄을 수동으로 나누고 substr필요한 경우 마지막 문자를 증가시킵니다.

관련 정보