awk에서 첫 번째 문자를 -7자로 자르는 방법은 무엇입니까?

awk에서 첫 번째 문자를 -7자로 자르는 방법은 무엇입니까?

여러 줄이 포함된 파일이 있습니다.

여기서 두 번째 열은 이지만 user_id마지막 7개 숫자는 임의의 숫자입니다.

실제 신분증을 얻으려면 잘라내야 합니다.

1st character to the -7 character그래서 내가 필요한 것은 각 행의 두 번째 열을 얻는 것입니다 .

awk의 기능을 검색했는데 substr직접 작업을 수행할 수 없는 것 같습니다.

그렇다면 awk에서 첫 번째 문자를 -7자로 자르는 방법은 무엇입니까?

답변1

awk '{ print substr($2,1,length($2)-7) }'

length($2) <= 7이면 어떤 출력도 얻지 못합니다. 최소 길이가 있어야 합니까? 그렇다면 awk에서 min() 함수를 정의할 수 있습니다.

awk 'function min(a,b){return a<b?b:a}  ..<rest of code>..'

답변2

두 번째 열에서 작업을 수행해야 한다고 가정합니다(마지막 7자 자르기).

[whatever command you use to open your file] | awk '{ print $2 }' | rev | cut -c 8- | rev

세부사항은 다음과 같습니다:

awk '{ print $2 }'파일의 두 번째 열을 가져옵니다.

rev문자열을 준비합니다(반대로). 마지막 N자를 제거 할 수 있는 방법이 없다고 생각해서 cut이렇게 하면 역방향 문자열에서 처음 N자를 제거하게 됩니다.

cut -c 8-문자열에서 처음 7자를 제거합니다. (반복적인 시도 끝에 발견되어 검증이 필요함)

rev처리된 문자열을 반대로 바꿉니다. 이렇게 하면 원래 문자열이 표시되지만 7자는 제외됩니다.

관련 정보