필드의 패턴을 기준으로 열 분할

필드의 패턴을 기준으로 열 분할

$2예: 입력 파일을 분할하고 tab포스트 패턴을 넣고 싶습니다surname

입력하다:

name    surname1    
name    surname30000
name    surname456

원하는 출력:

name    surname    1
name    surname    30000
name    surname    456

답변1

하나선택하다:

awk 'match($2,/[0-9]+$/) {printf("%s\t%s\t%s\n", $1, substr($2,0,RSTART), substr($2,RSTART,RLENGTH))}' filename

이는 두 번째 열 끝에 있는 숫자 문자열과만 일치합니다.

답변2

다음을 사용하여 첫 번째 숫자를 찾아 탭과 숫자로 바꿀 수 있습니다.

sed 's/[0-9]/\t&/' file

답변3

sed -e 's/\([0-9]\)/\t\1/' input.txt

각 줄의 첫 번째 숫자 앞에 탭 문자를 추가합니다.

산출:

name    surname 1    
name    surname 30000
name    surname 456

답변4

데이터는 특정 위치에 있을 수 있습니다.기둥, 예를 들어 16:

sed -e 's/^\(.\{15,15\}\)/\1 /'

또는 세 번째 필드의 관심 데이터가 숫자가 아닐 수도 있습니다.

sed -e 's/^\([[:alpha:]]\+[[:space:]]\+\)\([[:alpha:]]\+\)/\1\2 /'

둘 중 하나는 데이터의 숫자(또는 기타 알파벳이 아닌) 문자 앞에 공백을 배치합니다.

참고로:

관련 정보