다음 열이 시작되는 임의의 숫자 외에 특정 구분 기호가 없는 텍스트 파일의 첫 번째 열을 추출하는 방법을 찾고 있습니다. 예:
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
( 와 같은 줄 , 즉 숫자 왼쪽에 빈 부분이 있는 줄 에는 아무 것도 출력되지 않습니다 .)