숫자로 시작하는 모든 단어를 찾는 방법은 무엇입니까?

숫자로 시작하는 모든 단어를 찾는 방법은 무엇입니까?

숫자로 시작하는 모든 단어를 grep하는 방법을 알고 싶습니다. 지금까지 나는 다음을 수행했습니다.

egrep "^[[:digit:]]" tst

하지만 숫자로 시작하는 줄만 인쇄합니다.

도움을 주셔서 미리 감사드립니다.

답변1

grepPerl Compatible RegExp( )를 지원하는 경우 -P다음을 수행할 수 있습니다.

grep -Po '(?<=^|\s)\d[^\s]*(?=\s|$)' file.txt
  • word공백으로만 구분된 문자를 의미한다고 가정합니다 .

  • ?<=^|\s)너비가 0인 정방향 검색 모드로, 원하는 단어 앞에 줄의 시작이나 공백이 옵니다.

  • \d[^\s]*우리가 원하는 일치입니다. 숫자로 시작하는 단어입니다.

  • (?=\s|$)너비가 0인 긍정적 예측 모드로, 원하는 일치 항목 뒤에 공백이나 줄 끝이 오는지 확인합니다.

답변2

숫자로 시작하는 단어 목록을 한 줄에 하나씩 인쇄하려면 다음과 같이 할 수 있습니다.

tr -cs '[:digit:][:alpha:]' '\n' | grep '^[:digit:]'

tr명령은 모든 영숫자 문자열을 한 줄에 하나씩 나열합니다. 그런 다음 grep은 줄 시작 부분의 숫자만 보면 됩니다.

답변3

나는 추천한다

echo "foo bar 11baz q3ux
one, 2two? three!" | grep -o '\<[[:digit:]][^[:blank:]]*\>'
11baz
2two

이는 각각 단어 시작 및 단어 끝 표시로 \<및 를 사용합니다.\>

관련 정보