구두점을 포함하지 않는 모든 줄을 인쇄합니다.

구두점을 포함하지 않는 모든 줄을 인쇄합니다.

구두점을 포함하지 않는 모든 줄을 인쇄하는 정규식 패턴을 원합니다.

입력하다:

.This is line 1
This is ! line 2
This is line (3)
This is line 4

산출:( 해야 한다)

This is line 4

내가 지금까지 시도한 것 :

grep '[^[:punct:]]' file.txt

하지만 문장 부호가 아닌 문자는 모두 표시됩니다.

답변1

grep구두점이 아닌 문자가 포함된 모든 줄을 인쇄합니다 . 이는 구두점을 포함하지 않는 모든 줄을 인쇄하는 것과 다릅니다.

후자의 경우 -v스위치가 필요합니다(패턴과 일치하지 않는 줄 인쇄).

grep -v '[[:punct:]]' file.txt

어떤 이유로 이 스위치를 사용하지 않으려면 -v전체 줄이 구두점이 아닌 문자로 구성되어 있는지 확인해야 합니다.

grep '^[^[:punct:]]\+$' file.txt

답변2

sed에서는 다음과 같이 할 수 있습니다:

sed '/[[:punct:]]/!d'

awk에서는 다음과 같이 할 수 있습니다.

awk '!/[[:punct:]]/'

답변3

하나 Perl:

perl -nle 'print unless /\p{XPosixPunct}/' file

이것은 일치합니다-!"#$%&'()*+,./:;<=>?@[\]^_`{|}~유니코드는 구두점과 기호를 고려합니다.

또는:

perl -nle 'print unless /\p{Punct}/' file

\p{Punct}일치만-!"#%&'()*,./:;?@[\]_{}, 잃어버린$+<=>^`|~어떤 유니코드 기호가 고려됩니까?

perl기본적으로 POSIX 로케일이 사용됩니다. 이를 사용하지 않는 경우에는 perl모두 다음과 같이 설정해야 합니다 LC_ALL=POSIX. 왜냐하면 서로 다른 로케일은 서로 다른 구두점을 가질 수 있기 때문 SAA C입니다 ¢.

관련 정보