我想在unix平台上实现它。 shell,tcsh或csh将是有利的。 假设我输入数据如下: -
a abc abc acd abc
b qwe qre wet dfe
c rte wet dfr wet
d tyr fre wer wty
和我想要的输出如下: -
3 abc
0
2 wet
0
答案 0 :(得分:0)
你可以试试这个:
cut -d' ' -f2- yourFile | while read line; do
echo "$line" | tr ' ' '\n' | sort | uniq -c | grep -v '^ *1' || echo 0;
done | sed 's/^ *//'
我们的想法是将空间转换为换行符,以便uniq
等可用于将每一行分析为一系列行。
答案 1 :(得分:0)
您可以使用此awk
:
awk '{
for (i=1; i<=NF; i++)
++freq[$i]
s = ""
for (i in freq)
if (freq[i] > 1)
s = s freq[i] OFS i ORS
printf "%s", (s == "" ? "0" ORS : s)
delete freq
}' file
3 abc
0
2 wet
0
答案 2 :(得分:0)
我使用这样的东西:
cat file.txt | while read line; do echo $line | tr " " "\n" | sort | uniq -c | sort -k2nr | awk 'END{print}'| awk '{ if ($1 == 1) print 0; else print $1, $2}' ; done
使用awk我可以为输出制作更多条件。