Linux sed - 공백이 없는 와일드카드 문자열 찾기

Linux sed - 공백이 없는 와일드카드 문자열 찾기

이것sed명령은 마침표를 사용하여 와일드카드 기호 등을 찾을 수 있습니다..*라인의 모든 것을 검색하십시오.

(이 경우) 공백을 제외한 모든 기호를 원한다고 말할 수 있습니까? 그래서:

FredSmith- 유효할 것입니다

Fred&Ginger- 유효할 것입니다

6times7- 유효할 것입니다

One too many- 회의아니요효율적인

답변1

예, 가능합니다.

echo "One too many" | sed -n '/^[^[:space:]]*$/p'

위 명령은 아무것도 반환하지 않습니다.


echo "FredSmith" | sed -n '/^[^[:space:]]*$/p'
FredSmith

후자는 인쇄하는 동안FredSmith


  • [:space:]- 공백 문자에 대한 POSIX 문자 클래스

  • /^[^[:space:]]*$/p- "공백이 아닌 문자만 포함된 경우 일치 항목을 인쇄합니다 [^[:space:]]"를 의미합니다(사용부정적인캐릭터 클래스)

답변2

Roman으로 표시된 것처럼 부정 문자 클래스( [^ ]또는 [^[:space:]])를 사용하거나 아래와 같이 일치 항목을 반전시킵니다. 어느 것이 더 나은지는 주변 구조에 따라 다릅니다.

$ cat foo.txt
with space
spaceless
$ sed '/ /d'  < foo.txt     # (d)elete the line on match
spaceless
$ sed -n '/ /!p' < foo.txt  # (p)rint if the pattern does not (!) match
spaceless

관련 정보