숫자로 시작하지 않는 모든 문자열을 Grep합니다.

숫자로 시작하지 않는 모든 문자열을 Grep합니다.

숫자로 시작하지 않는 모든 문자를 표시하기 위해 grep을 찾고 있습니다. 나는 다음과 같은 일을 했습니다.

grep -v '^[1-2]*[a-zA-Z]?' -o

하지만 작동하지 않습니다. 일부 정규 경험에 대한 아이디어가 있습니까?

답변1

grep -v '^[0-9]'

숫자로 시작하여 -v( ) 와 일치하지 않는 모든 행을 출력합니다.^[0-9]

예를 들어

$ cat test
string
string123
123string
1string2
$ grep -v '^[0-9]' test
string
string123

또는 숫자로 시작하는 모든 단어를 제거하려는 경우

sed 's/[[:<:]][[:digit:]][[:alnum:]_]*[[:>:]]//g'

또는 바로가기와 어설션을 사용하세요.

sed 's/\<\d\w*\>//g'

예를 들어

$ cat test
one
two2
3three
4four4
five six
seven 8eight
9nine ten
11eleven 12twelve
a b c d
$ sed 's/[[:<:]][[:digit:]][[:alnum:]_]*[[:>:]]//g' test
one
two2


five six
seven 
 ten

a b c d

답변2

어떻게 정의하느냐에 따라 다르다(예: 문자열에 구두점을 포함할지 여부) 하지만 다음과 같은 것으로 시작할 수도 있습니다.

grep -Po '\b[^[:digit:]].*?\b' file

답변3

숫자로 시작하는 줄에서 모든 단어를 제거하려면 sed다음을 수행하세요.

sed 'x;s/.*//;G
     s/[[:space:]][[:punct:]]\{0,1\}[0-9][^[:space:]]*//g
     s/\n//'

...또는 숫자로 시작하지 않는 단어만 필요한 경우 각 단어를 별도의 줄에 인쇄하세요.

sed 'y/!\t "'"'?/\n\n\n\n\n\n/;/^[_[:alpha:]]/P;D"

...위의 작업은 꽤 잘 수행될 것입니다. 관련성이 있다고 생각되는 구분 기호에 대해 ewline 번역을 사용자 정의해야 합니다 \n. y///또한 sed구현에 따라 백슬래시 이스케이프 문자 <tab>대신 실제 값이 필요할 수도 있습니다.\t

관련 정보