使用 sed 打印所有没有数字的行

使用 sed 打印所有没有数字的行

我需要在 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

相关内容