sed에서 정규식을 사용하여 숫자가 아닌 문자가 포함된 모든 줄을 인쇄해야 합니다. 입력은 csv이며 일부 행에는 텍스트와 숫자가 포함되어 있습니다. 숫자가 없는 것만 인쇄하고 싶습니다. 내가 시도한 것은 다음과 같습니다.
sed -E -n '/^\D*$/p' direcciones.csv
왜 아무것도 찾지 못합니까?
답변1
@steeldriver는 귀하의 시도가 작동하지 않는 이유를 이미 설명했습니다( sed
그래도 GNU에서는 작동해야 합니다).
하지만 간단하게 유지하면 어떨까요? 숫자가 아닌 문자만 포함된 모든 줄을 인쇄하는 것은 숫자가 포함된 모든 줄을 삭제하는 것과 같습니다.
sed '/[0-9]/d' direcciones.csv
쓰기도 읽기도 더 쉽죠?
답변2
sed 구현은 PCRE 확장을 지원하지 않을 수 있습니다 ( 확장 정규식 스위치를 \D
사용하더라도 ). -E
다음을 사용할 수 있어야 합니다 [^[:digit:]]
.
$ printf 'foo,bar,baz\nfoo,123,baz\n' | sed -n '/^[^[:digit:]]*$/p'
foo,bar,baz
답변3
사용이 제한되어 있나요 sed
, 아니면 사용할 수 있나요 grep
?
grep -v '[0-9]' direcciones.csv