我有一个没有的busybox系统,uniq
我想生成一个唯一的重复行列表。
一个普通的uniq
模拟awk
将是:
sort <filename> | awk '!($0 in a){a[$0]; print}'
我如何使用awk
(或sed
就此而言,不是perl
)来完成:
sort <filename> | uniq -d
在busybox 系统上,您可能需要保存字节。;-)
awk ++a[\$0]==2
可以这样做(不需要排序):
awk '{++a[$0]; if(a[$0] == 2) print}'
这可能对您有用:
# make some test data
seq 25 >/tmp/a
seq 3 3 25 >>/tmp/a
seq 5 5 25 >>/tmp/a
# run old command
sort -n /tmp/a | uniq -d
3
5
6
9
10
12
15
18
20
21
24
25
# run sed command
sort -n /tmp/a |
sed ':a;$bb;N;/^\([^\n]*\)\(\n\1\)*$/ba;:b;/^\([^\n]*\)\(\n\1\)*/{s//\1/;P};D'
3
5
6
9
10
12
15
18
20
21
24
25