首页 > 试题广场 >

第二列是否有重复

[编程题]第二列是否有重复
  • 热度指数:26685 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个nowcoder.txt文件,其中有3列信息,如下:
20201001 python 99
20201002 go 80
20201002 c++ 88
20201003 php 77
20201001 go 88
20201005 shell 89
20201006 java 70
20201008 c 100
20201007 java 88
20201006 go 97
编写一个shell脚本来检查文件第二列是否有重复,且有几个重复,并提取出重复的行的第二列信息(先按次数排序,如果次数相同,按照单词字母顺序排序),输入如下
2 java
3 go
示例1

输入

20201001 python 99
20201002 go 80
20201002 c++ 88
20201003 php 77
20201001 go 88
20201005 shell 89
20201006 java 70
20201008 c 100
20201007 java 88
20201006 go 97

输出

2 java
3 go
awk '{
    if($0 && $2)
        map[$2]++;
}END{
    for(j in map)
        if(map[j] > 1)
            printf("%d %s\n", map[j], j);
}' | sort -nk1 -k2
发表于 2023-09-22 10:51:36 回复(0)
awk '{arr[$2]++}END{for(i in arr){if(arr[i]>1){print arr[i],i}}}'|sort -nk1


发表于 2023-02-09 12:25:57 回复(0)
cat nowcoder.txt | awk '{print $2}' | sort | uniq -c | awk '{if($1>1) print$0}' | sort
发表于 2023-01-10 21:40:14 回复(0)
cat nowcoder.txt | awk '{print $2}' | sort | uniq -c | sort | grep -v '1'
发表于 2023-01-03 15:20:36 回复(0)
awk '{a[$2]++} END{for(i in a){if(a[i] > 1){print a[i],i}}}' nowcoder.txt
发表于 2022-08-27 17:43:02 回复(0)
xdm能否帮我看下代码 在我服务器可以运行在这里不行
cat 10.txt | awk '{print $2}'| sort | uniq -c | awk '{if($1>1) print $0}'|sort


发表于 2022-08-07 20:56:28 回复(0)
cat nowcoder.txt |awk '{print $2}' | sort | uniq -c| awk '{if($1>1)print $1,$2}'|sort 
发表于 2022-08-05 16:52:09 回复(0)
awk '{print $2}' nowcoder.txt|sort|uniq -c|awk '$1 > 1{print}'|sort
发表于 2022-07-21 11:01:04 回复(0)
awk '{print $2}' nowcoder.txt|awk '{arr[$1]++}END{for(i in arr){if(arr[i]>1)print arr[i],i}}'

### 上面语句解析
## 整体语法是awk'{}END{}'
## 在END中加入了for循环和if条件判断
## 需要注意的是for(){if(值>1) print 输出结果}
## awk里和shell最大的区别是:awk里不是shell中的for do done的语法,if也不用fi结尾。awk里的打印是print或者prinf,shell使用echo

下面是第二种简单写法

awk '{print $2}' nowcoder.txt|sort|uniq -cd|sort -n
### 上面语句解析
## sort 排序
## uniq -c 按出现次数为行添加前缀 -d 仅打印重复行 
## sort -n 按数字排序
发表于 2022-07-17 23:15:40 回复(0)
awk  '{
a[$2]+=1
}END{
for(i in a){
if (a[i]>1){
printf("%s %s",a[i],i)
}
}
}' nowcoder.txt
发表于 2022-07-17 16:59:13 回复(0)
#!/bin/bash
i=$(awk  -F " "  '{print $2}'   nowcoder.txt)


declare -A arr1

for x in $i
do

        if [ -z  ${arr1[$x]} ]
        then
                arr1["$x"]=1
        else

                let arr1["$x"]++

        fi
done




for y in ${!arr1[@]}
do
        if [ ! ${arr1[$y]} -eq 1 ]
        then

        echo "${arr1[$y]} $y"
        fi
done

发表于 2022-07-11 13:21:56 回复(0)
cat nowcoder.txt | sort -k 2 | cut -d " " -f 2 | uniq -c | awk '{if ($1 > 1) {print $0}}' | sort

发表于 2022-07-09 13:42:59 回复(0)
awk '{print $2}' | sort -r | uniq -c | awk '$1>1'

发表于 2022-06-30 18:58:16 回复(0)
awk '{array[$2]++}END{for(i in array)if(array[i]>1)print array[i],i}' nowcoder.txt

发表于 2022-05-18 16:25:45 回复(0)
cut -f2 -d " " nowcoder.txt | xargs -n1 | sort | uniq -c | sort -k1| awk '($1 > 1){print $1,$2}'

发表于 2022-05-15 19:21:08 回复(0)

问题信息

难度:
48条回答 1500浏览

热门推荐

通过挑战的用户

查看代码