이것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