我试图删除文件中的大多数重复行(或者更准确地说是脚本函数的管道输出),但是希望保留其他包含某种模式的行。 在这里和其他地方看过
awk '!($1 in a){a[$1];print}' OR
awk '!x[$0]++'
如果你想简单地删除每一个副本,工作得很好。 但是这个机制可以很容易地添加一个条件吗?
例如,我想将所有行保留在:
$1==".:"||$1==":."||$1==":"||$1="."
但是,任何其他行,我都希望确保不会重复。 所以在下面的例子中,我想删除“/ bin”和“/ usr / bin”。
/bin
:
/usr/bin
:
/usr/openwin/bin
:
/usr/bin
:
/usr/etc
:
/etc
:.
:
a
:
/usr/bin/X11
:
.
:
/bin
:
由于
答案 0 :(得分:0)
这应该适合你:
awk '!($1 in a) || ($1 == ":") || ($1 == ":.") || ($1 == ".:") || ($1 == ".") {a[$1];print}'
答案 1 :(得分:0)
这有用吗?
awk '($1==".:"||$1==":."||$1==":"||$1="."||!x[$0]++)' $file
答案 2 :(得分:0)
$ awk '!seen[$0]++ || ($1 ~ /^(\.:|:\.|:|\./)$)' file
/bin
:
/usr/bin
:
/usr/openwin/bin
:
:
/usr/etc
:
/etc
:.
:
a
:
/usr/bin/X11
:
.
:
: