找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 43666|回复: 16

[问题求助] gawk或dos能方便实现去重和统计重复次数的操作吗?

[复制链接]
发表于 2013-7-30 22:27:21 | 显示全部楼层 |阅读模式
1.比如数据:
aaa
aaa
bbbb
bbbb
bb
cccccc
ccc
ccc
ccc
bbb
bbb

输出为:aaa 2
            bbbb 2
            bb 1
            cccccc 1
            ccc 3
            bbb 2

或者频度在前面也可以 类似linux的  uniq

2.在上一步的基础上,是否可以简便的实现 根据$1 或$2排序 linux的sort还是比较方便的

3.在上面的基础上,是否可以实现只显示排序后的 前多少行?   类似 linux的 head -n

可以通过通道实现。。。。 呵呵
发表于 2013-7-30 23:17:18 | 显示全部楼层
先试试这个能否满足第一步
http://bbs.bathome.net/thread-25608-1-1.html
后面的几步都可以实现,慢慢来,别着急。先等等看PowerShell脚本是否更加简洁。
发表于 2013-7-31 00:09:25 | 显示全部楼层
本帖最后由 CrLf 于 2013-7-31 00:15 编辑

看来楼主会 linux,其实下个工具包就都有了。

顶楼例子可以用纯批:
  1. @echo off
  2. set max=3
  3. for /f "delims=" %%a in (a.txt) do set /a "ar[%%a]+=1"
  4. for /f "tokens=1,2 delims==" %%a in ('set ar[') do (
  5.    set /a "n+=1,1/(n/max)"||goto break
  6.    echo %%a %%b
  7. )
  8. :break
  9. pause
复制代码
不过文本操作这种事如果条件允许,还是建议用 linux 里的组合
 楼主| 发表于 2013-7-31 08:31:06 | 显示全部楼层
回复 3# CrLf


    什么工具包呢?
 楼主| 发表于 2013-7-31 08:31:28 | 显示全部楼层
回复 2# gawk


    多谢
发表于 2013-7-31 08:43:11 | 显示全部楼层
 楼主| 发表于 2013-7-31 09:21:09 | 显示全部楼层
回复 6# gawk


    使用了这个包 path后  more 就不能用了?
 楼主| 发表于 2013-7-31 09:41:09 | 显示全部楼层
本帖最后由 shenghuo 于 2013-7-31 09:53 编辑

回复 6# gawk


    呵呵 很奇怪啊,我之前path c:\gawk     下载了这个包后,我就path ;

    然后 path C:\UnxUtils\usr\local\wbin

    结果用more的时候  提示不是内部外部命令了。。。。

    当内部命令和外部命令重复时 怎么使用外部命令呢? 比如 sort  dos也有
发表于 2013-7-31 09:48:57 | 显示全部楼层
回复 8# shenghuo


你设置PATH的方法不对,应该把C:\UnxUtils\usr\local\wbin追加到PATH后面,而不是把PATH设置成C:\UnxUtils\usr\local\wbin,否则系统原来的C:\windows\system32等就被从PATH里面删掉了。
  1. set PATH=%PATH%;C:\UnxUtils\usr\local\wbin
复制代码
 楼主| 发表于 2013-7-31 09:57:02 | 显示全部楼层
回复 9# gawk


    多谢 大神们的指导
 楼主| 发表于 2013-7-31 10:06:47 | 显示全部楼层
回复 9# gawk


和linux  有些不同  是我用错了 还是  支持不好呢?  求教
发表于 2013-7-31 10:40:51 | 显示全部楼层
回复 11# shenghuo


uniq之前是需要先排序的

[root@ tmp]# uniq -c urfile
      1 jixie
      1 nengyuan
      1 jixie

[root@ tmp]# sort urfile | uniq -c
      2 jixie
      1 nengyuan
 楼主| 发表于 2013-7-31 12:52:38 | 显示全部楼层
回复 12# gawk


求指点,有的命令参数 用-  有的用/  ?

sort  我用-  显示错误  用/ 可以了
发表于 2013-7-31 14:06:18 | 显示全部楼层
回复 13# shenghuo


你这个sort /r调用的是windows自己的sort命令,不是UnxUtils里面的那个。
发表于 2013-7-31 17:20:17 | 显示全部楼层
path 变量中的路径是从前到后依次匹配的,所以如果你要优先调用 C:\UnxUtils\usr\local\wbin 的命令,就得写成:
  1. path C:\UnxUtils\usr\local\wbin;%path%
复制代码
这样就会先匹配 C:\UnxUtils\usr\local\wbin 下的可执行文件,然后再去搜索原来的 %path% 路径
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:09 , Processed in 0.010623 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表