免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: fufelixzh
打印 上一主题 下一主题

[文本处理] shell脚本面试题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2013-08-18 17:31 |只看该作者
  1. awk -F "/" '{print $3}' w.txt | sort |uniq -c
复制代码

论坛徽章:
1
金牛座
日期:2013-09-14 18:12:00
22 [报告]
发表于 2013-09-06 15:56 |只看该作者
cat b.txt|awk -F / {'print $3'}|sort |uniq -c|sort -rn

cat b.txt|awk -F / {'print $3'}|sort |uniq -c|sort -r
cat b.txt|awk -F / {'print $3'}|sort |uniq -c

论坛徽章:
0
23 [报告]
发表于 2013-09-06 23:18 |只看该作者
回复 17# mcshell

马仔的牛B啊。这么长,。。
   

论坛徽章:
0
24 [报告]
发表于 2013-09-07 07:33 |只看该作者
本帖最后由 littlecivic 于 2013-09-26 13:25 编辑

cut -d'/' -f3  b.txt |sort |uniq -c|sort -nr -k1

论坛徽章:
0
25 [报告]
发表于 2013-09-07 12:21 |只看该作者
求性能分析,求高性能版本

论坛徽章:
0
26 [报告]
发表于 2013-09-09 22:43 |只看该作者
echo "http://www.baidu.com/index.html
http://www.google.com/index.html
http://www.baidu.com/get.html
http://www.baidu.com/set.html
http://www.google.com/index.html
http://www.yahoo.com.cn/put.html" | awk -F"//" '{print $2}' |awk -F"/" '{print $1}' | sort | uniq  -c | sort -r

论坛徽章:
0
27 [报告]
发表于 2013-09-24 19:15 |只看该作者
#!/bin/bash

awk '
BEGIN { FS = "/"}
{
        array[$3]++
        count++
}
# 以下代码相当于sort FILE | uniq -c | sort -n -r
END {
        while (num < count) {
                max=0
                for (name in array) {
                        if(max < array[name]) {
                        max = array[name]
                        max_name = name
                        }
                }
                print max, max_name
                array[max_name]=0
                num += max
        }

       
}' sample.txt

论坛徽章:
0
28 [报告]
发表于 2013-09-24 19:16 |只看该作者
  1. #!/bin/bash

  2. awk '
  3. BEGIN { FS = "/"}
  4. {
  5.         array[$3]++
  6.         count++
  7. }
  8. # 以下代码相当于sort FILE | uniq -c | sort -n -r
  9. END {
  10.         while (num < count) {
  11.                 max=0
  12.                 for (name in array) {
  13.                         if(max < array[name]) {
  14.                         max = array[name]
  15.                         max_name = name
  16.                         }
  17.                 }
  18.                 print max, max_name
  19.                 array[max_name]=0
  20.                 num += max
  21.         }

  22.        
  23. }' sample.txt
复制代码

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
29 [报告]
发表于 2013-09-24 22:09 |只看该作者
答案很精彩啊,不过发现有一些答案没有照顾到“然后按次数进行降序排列”这个要求

论坛徽章:
0
30 [报告]
发表于 2014-07-10 13:26 |只看该作者
cat b.txt|awk 'BEGIN {FS="/"} {print $3}'|sort|uniq -c|sort -nr

需要用BEGIN,不然第一行会是空
因为我们读入第一行的时候, 那些变数 $1, $2...
预设还是以空格键为分隔的,所以虽然我们定义了 FS="/" 了, 但是却仅能在第二行后才开始生效
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP