공백과 구두점이 뒤따르는 알파벳을 찾는 방법은 무엇입니까?

공백과 구두점이 뒤따르는 알파벳을 찾는 방법은 무엇입니까?

나는

10909101 - testingName - Log8767, File787 - 8:50PM  

testingName이제 grep을 사용하여 출력을 얻고 싶습니다 .

첫 번째 숫자는 자릿수에 따라 다를 수 있으므로(다른 행 12자체가 첫 번째 숫자가 될 수 있음) 숫자 기반 grep을 사용할 수 없습니다. 그럼 이 문제를 어떻게 해결하나요?

답변1

모든 데이터의 형식이 동일하다는 점을 고려하면 grep이는 잘못된 도구입니다. 확실히 사용할 수는 있지만 사용하는 것은 골치 아픈 일입니다. 이것은 grep설계된 것이 아니며 훨씬 더 나은 도구는 awk.

구분 기호는 항상 "공백, 대시, 공백" 순서이므로 -다음과 같이 할 수 있습니다.

$ awk -F' - ' '{print $2}' <filename>

<filename>검색 중인 데이터가 포함된 파일 이름은 어디에 있으며, 전체 파일의 모든 줄이 두 번째 항목으로 잘려 표시됩니다. 세 문자 구분 기호를 사용하고 싶지 않다면 다음과 같이 하세요.

$ awk -F- '{print $2}' | tr -d ' '

공백을 포함하여 첫 번째부터 -두 번째까지 모든 것을 간단히 잡고 를 통해 공백을 제거합니다 tr. 물론, 파일 이름에 공백이 있으면 문제가 발생할 수 있으므로 첫 번째 예를 고수하는 것이 좋습니다.

답변2

이는 다음을 사용합니다.의 경우 grep이지만,~이다순수한 grep:

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

산출:

testingName

관련 정보