하나 이상의 숫자로 구분된 파일 잘라내기

하나 이상의 숫자로 구분된 파일 잘라내기

다음 열이 시작되는 임의의 숫자 외에 특정 구분 기호가 없는 텍스트 파일의 첫 번째 열을 추출하는 방법을 찾고 있습니다. 예:

John Smith 1234 Main Street
Amy Brown and Sally Williams 9 Drury Lane
Sunny's 1000 Brown Avenue

예상되는 출력은 다음과 같습니다.

John Smith
Amy Brown and Sally Williams
Sunny's

cut다음 기능은 지원되지 않는 것 같습니다 .cut file.txt -d {0..9} -f 1

솔루션은 모든 표준 UNIX 유틸리티를 사용할 수 있습니다.

답변1

$ awk -F'[0-9]' '{ print $1 }' file
John Smith
Amy Brown and Sally Williams
Sunny's

-F'[0-9]'숫자는 입력 데이터에서 필드 구분 기호로 처리되며 print $1필드를 구분하는 첫 번째 숫자를 출력한다고 말합니다 .

-F'[0-9]'로 변경하면 -F' *[0-9]'숫자 앞의 모든 공백도 제거됩니다.

답변2

해결책은 다음 과 같습니다 sed.

echo "John Smith 1234 Main Street
Amy Brown and Sally Williams 9 Drury Lane
Sunny's 1000 Brown Avenue" | sed 's/ *[0-9].*$//'
John Smith 
Amy Brown and Sally Williams 
Sunny's 

답변3

GNU grep:

grep -Po '.*?(?=\s*\d)' file

답변4

GNU와 함께grep

grep -o '^[^[:digit:]]*' file

123foo( 와 같은 줄 , 즉 숫자 왼쪽에 빈 부분이 있는 줄 에는 아무 것도 출력되지 않습니다 .)

관련 정보