Board logo

标题: [文本处理] 批处理如何如何处理文本行? [打印本页]

作者: kui198677    时间: 2011-9-10 19:49     标题: 批处理如何如何处理文本行?

我有一个文本123.txt内容为
ua1 aaaaaaaaaa
re4 bbbbbb bbbb
fsd4 ccccccc c cccc
ua1 aaaaaaaaaa
ua1 aaaaaaaaaa
re4 bbbbbb dddd
fsd4 ccccccc c cccc
ua1 bbbbbbbbaaaaaaaaaa
re4 bbbbbb bbbb
fsd4 ccccccc c cccc
ua1 aaaaaaaaaa
df2 fgsfghfghfgjj
如何用批处理判断总共有多少行,
第二列含aaaaaaaaaa的有多少行,含bbbbbb bbbb的有多少行,下面的一样
然后ua1 aaaaaaaaaa一样的有多少行
然后在屏幕上显:
aaaaaaaaaa 共:多少行
bbbbbb bbbb 共:多少行
ua1 aaaaaaaaaa 有几行
作者: awk    时间: 2011-9-10 20:09

总共
  1. gawk "END{print NR}" a.txt
复制代码
  1. type a.txt | find /c /v ""
复制代码

作者: awk    时间: 2011-9-10 20:15

  1. gawk "{if($0~/^[^ ]* .*aaaaaaaaaa/)a+=1;if($0~/^[^ ]* bbbbbb bbbb/)b+=1;if($0~/ua1 aaaaaaaaaa/)u+=1;}END{print a,b,u}" a.txt
复制代码

作者: ArdentMan    时间: 2011-9-10 22:59

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "aa=aaaaaaaaaa"
  3. Set "bb=bbbbbb bbbb"
  4. Set "ua=ua1 aaaaaaaaaa"
  5. For /F "delims=" %%i In (a.txt) Do (
  6.   Set "Str=%%i"
  7.   If "!Str!" EQU "%ua%" Set /A _ua+=1
  8.   If "!Str:%bb%=!" NEQ "!Str!" Set /A _bb+=1
  9.   For /F "tokens=2" %%j In ("%%i") Do (
  10.     Set "Var=%%j"
  11.     If "!Var:%aa%=!" NEQ "!Var!" Set /A _aa+=1
  12.   )
  13. )
  14. Echo 第二列含%aa%的有%_aa%行
  15. Echo 含%bb%的有%_bb%行
  16. Echo %ua%有%_ua%行
  17. Pause>Nul
复制代码

作者: 545810831    时间: 2011-9-11 09:11

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set _1=.
  4. set _2=aaaaaaaaaa
  5. set _3=bbbbbb bbbb
  6. :sta
  7. set a=0
  8. set /a m+=1
  9. for /f "delims=" %%i in ('findstr  "!_%m%!" 1.txt') do echo %%i&set /a a+=1
  10. if %m% equ 1 echo 总行数:!a!
  11. if %m% equ 2 echo 含!_%m%!:为!a!次数
  12. if %m% equ 3 echo 含!_%m%!:为!a!次数
  13. if %m% lss 3 goto sta
  14. pause
复制代码

作者: CrLf    时间: 2011-9-11 15:19

  1. find /c /v ""<a.txt
  2. ::获取总行数
  3. findstr /brc:"[^ ]* bbbbbb bbbb" a.txt|find /c /v ""
  4. ::查找第二列为指定内容的行数
  5. findstr /xc:"ua1 aaaaaaaaaa" a.txt|find /c /v ""
  6. ::查找完全为指定内容的行数
复制代码

作者: xslxslxsl    时间: 2011-9-12 00:27

本帖最后由 xslxslxsl 于 2011-9-12 00:28 编辑
  1. type 123.txt | find /c /v ""
复制代码

作者: xslxslxsl    时间: 2011-9-12 00:29

版主的真厉害,我都不敢写上来了
作者: Seder    时间: 2011-9-12 01:04

  1. sed -n "$=" test
复制代码
  1. sed -n "/.* *aaaaaaaaaa*/p" test | sed -n "$="
复制代码
  1. sed -n "/.* *bbbbbb bbbb*/p" test | sed -n "$="
复制代码
  1. sed -n "/ua1 aaaaaaaaaa*/p" test | sed -n "$="
复制代码

作者: kui198677    时间: 2011-9-12 21:26

看到帖子都是固定的,.我首先说明,我不确定第二列是什么也许是1到1000,或者不同,同写的代码是固定的,
可不可以只要第二列有不同的就显示出来,而且显示不同的行有多少行




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2