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

use*_*344 4 sed numeric-data

我需要在 sed 中使用正则表达式打印所有包含非数字字符的行。输入是一个 csv,其中一些行包含文本和数字。我只对打印没有数字的那些感兴趣。这是我尝试过的:

sed -E -n '/^\D*$/p' direcciones.csv
Run Code Online (Sandbox Code Playgroud)

为什么它没有找到任何东西?

Phi*_*pos 10

@steeldriver 已经解释了为什么您的尝试不起作用(sed尽管应该与 GNU 一起使用)。

但为什么不保持简单呢?打印仅包含非数字字符的所有行与删除所有包含数字字符的行相同:

sed '/[0-9]/d' direcciones.csv
Run Code Online (Sandbox Code Playgroud)

更容易写和更容易阅读,不是吗?


ste*_*ver 6

您的 sed 实现可能不支持 PCRE 扩展\D(即使使用-E扩展的正则表达式开关)。您应该可以使用[^[:digit:]]

$ printf 'foo,bar,baz\nfoo,123,baz\n' | sed -n '/^[^[:digit:]]*$/p'
foo,bar,baz
Run Code Online (Sandbox Code Playgroud)


pLu*_*umo 5

你是仅限于sed还是可以使用grep

grep -v '[0-9]' direcciones.csv
Run Code Online (Sandbox Code Playgroud)

  • 这不是标题所说的“所有没有数字的行”(并且 `sed` 尝试正在尝试这样做),而是所有不完全是数字的行。你需要`grep -v '[0-9]' direcciones.csv` (2认同)