숫자로 시작하는 모든 단어를 grep하는 방법을 알고 싶습니다. 지금까지 나는 다음을 수행했습니다.
egrep "^[[:digit:]]" tst
하지만 숫자로 시작하는 줄만 인쇄합니다.
도움을 주셔서 미리 감사드립니다.
답변1
grep
Perl 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
이는 각각 단어 시작 및 단어 끝 표시로 \<
및 를 사용합니다.\>