[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

可以通过通道实现。。。。 呵呵

先试试这个能否满足第一步
http://bbs.bathome.net/thread-25608-1-1.html
后面的几步都可以实现,慢慢来,别着急。先等等看PowerShell脚本是否更加简洁。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

本帖最后由 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 里的组合

TOP

回复 3# CrLf


    什么工具包呢?

TOP

回复 2# gawk


    多谢

TOP

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 6# gawk


    使用了这个包 path后  more 就不能用了?

TOP

本帖最后由 shenghuo 于 2013-7-31 09:53 编辑

回复 6# gawk


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

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

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

    当内部命令和外部命令重复时 怎么使用外部命令呢? 比如 sort  dos也有

TOP

回复 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
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 9# gawk


    多谢 大神们的指导

TOP

回复 9# gawk


和linux  有些不同  是我用错了 还是  支持不好呢?  求教

TOP

回复 11# shenghuo


uniq之前是需要先排序的

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

[root@ tmp]# sort urfile | uniq -c
      2 jixie
      1 nengyuan
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 12# gawk


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

sort  我用-  显示错误  用/ 可以了

TOP

回复 13# shenghuo


你这个sort /r调用的是windows自己的sort命令,不是UnxUtils里面的那个。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

path 变量中的路径是从前到后依次匹配的,所以如果你要优先调用 C:\UnxUtils\usr\local\wbin 的命令,就得写成:
  1. path C:\UnxUtils\usr\local\wbin;%path%
复制代码
这样就会先匹配 C:\UnxUtils\usr\local\wbin 下的可执行文件,然后再去搜索原来的 %path% 路径

TOP

返回列表