标题: [问题求助] gawk或dos能方便实现去重和统计重复次数的操作吗? [打印本页]
作者: shenghuo 时间: 2013-7-30 22:27 标题: 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
可以通过通道实现。。。。 呵呵
作者: gawk 时间: 2013-7-30 23:17
先试试这个能否满足第一步
http://bbs.bathome.net/thread-25608-1-1.html
后面的几步都可以实现,慢慢来,别着急。先等等看PowerShell脚本是否更加简洁。
作者: CrLf 时间: 2013-7-31 00:09
本帖最后由 CrLf 于 2013-7-31 00:15 编辑
看来楼主会 linux,其实下个工具包就都有了。
顶楼例子可以用纯批:- @echo off
- set max=3
- for /f "delims=" %%a in (a.txt) do set /a "ar[%%a]+=1"
- for /f "tokens=1,2 delims==" %%a in ('set ar[') do (
- set /a "n+=1,1/(n/max)"||goto break
- echo %%a %%b
- )
- :break
- pause
复制代码
不过文本操作这种事如果条件允许,还是建议用 linux 里的组合
作者: shenghuo 时间: 2013-7-31 08:31
回复 3# CrLf
什么工具包呢?
作者: shenghuo 时间: 2013-7-31 08:31
回复 2# gawk
多谢
作者: gawk 时间: 2013-7-31 08:43
回复 4# shenghuo
UnxUtils
http://sourceforge.net/projects/unxutils/files/
作者: shenghuo 时间: 2013-7-31 09:21
回复 6# gawk
使用了这个包 path后 more 就不能用了?
作者: shenghuo 时间: 2013-7-31 09:41
本帖最后由 shenghuo 于 2013-7-31 09:53 编辑
回复 6# gawk
呵呵 很奇怪啊,我之前path c:\gawk 下载了这个包后,我就path ;
然后 path C:\UnxUtils\usr\local\wbin
结果用more的时候 提示不是内部外部命令了。。。。
当内部命令和外部命令重复时 怎么使用外部命令呢? 比如 sort dos也有
作者: gawk 时间: 2013-7-31 09:48
回复 8# shenghuo
你设置PATH的方法不对,应该把C:\UnxUtils\usr\local\wbin追加到PATH后面,而不是把PATH设置成C:\UnxUtils\usr\local\wbin,否则系统原来的C:\windows\system32等就被从PATH里面删掉了。- set PATH=%PATH%;C:\UnxUtils\usr\local\wbin
复制代码
作者: shenghuo 时间: 2013-7-31 09:57
回复 9# gawk
多谢 大神们的指导
作者: shenghuo 时间: 2013-7-31 10:06
回复 9# gawk
和linux 有些不同 是我用错了 还是 支持不好呢? 求教
作者: gawk 时间: 2013-7-31 10:40
回复 11# shenghuo
uniq之前是需要先排序的
[root@ tmp]# uniq -c urfile
1 jixie
1 nengyuan
1 jixie
[root@ tmp]# sort urfile | uniq -c
2 jixie
1 nengyuan
作者: shenghuo 时间: 2013-7-31 12:52
回复 12# gawk
求指点,有的命令参数 用- 有的用/ ?
sort 我用- 显示错误 用/ 可以了
作者: gawk 时间: 2013-7-31 14:06
回复 13# shenghuo
你这个sort /r调用的是windows自己的sort命令,不是UnxUtils里面的那个。
作者: CrLf 时间: 2013-7-31 17:20
path 变量中的路径是从前到后依次匹配的,所以如果你要优先调用 C:\UnxUtils\usr\local\wbin 的命令,就得写成:- path C:\UnxUtils\usr\local\wbin;%path%
复制代码
这样就会先匹配 C:\UnxUtils\usr\local\wbin 下的可执行文件,然后再去搜索原来的 %path% 路径
作者: shenghuo 时间: 2013-7-31 19:05
回复 15# CrLf
试验了一下,把UnxUtils外部命令文件夹放到前面使用sort 会出错,不知道什么原因, 放到后面就没事了
[attach]6640[/attach][attach]6639[/attach]
确定 文件夹中有 sort.exe
[attach]6641[/attach]
作者: gawk 时间: 2013-7-31 20:14
回复 16# shenghuo
方法1、把sort.exe放到当前目录下
方法2、在命令里面使用sort.exe的完整路径
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |