我是 shell 新手,几天前开始学习它,但遇到了一个问题。我想使用 sed 命令来过滤文件。
首先,我想从列表中删除所有不包含单词 zad 的文件
所以我这样做:

ls | sed '/[^{zad}]/d'

我不明白为什么这会从列表中删除所有文件?它会删除名称中不包含 z、a 或 d 的所有文件吗?

最佳答案

/[^{zad}]/d 删除包含至少一个不是 {zad} 之一的字符的每一行。这可能适用于每一行。

要删除包含 zad 的行,请使用 /zad/d

$ cat in.txt
foo
bar
zad
-- zad --
baz
$ sed '/zad/d' < in.txt
foo
bar
baz

如果要打印包含 zad 的行,请使用:
$ sed -n '/zad/p' < in.txt
zad
-- zad --
-n 不打印任何内容,p 打印匹配的行。

关于unix - 在 UNIX 中的 sed 命令中使用否定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23241280/

10-09 00:09