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

[文本处理] [已解决]批处理提取同时含有多个关键词的行并按行排序输出

本帖最后由 CrLf 于 2012-6-16 01:32 编辑

例如:提取行中同时含有多个关键词的行并按行排序输出
关键词:"6.0 ,无法 蔬菜"
关键词与关键词之间用空格隔开

目前学生营养餐口味还无法满足中小学生的多样化需求。由于学生午餐fghfhf
66.0采用的是大锅烹调、提前分装的形式,很多蔬菜在到  达学生餐桌旁时,已经色香味尽失,无法被孩子们接受。2324   
因此,不易变色变味的茄果类、菌菇类蔬菜和浅色蔬菜,应在学生午餐中34hff适量增加。
采 用的,无法菇类、216.0.8提前分装的蔬菜   12

输出结果:
66.0采用的是大锅烹调、提前分装的形式,很多蔬菜在到  达学生餐桌旁时,已经色香味尽失,无法被孩子们接受。2324   
采 用的,无法菇类、216.0.8提前分装的蔬菜   12
1

评分人数

    • zqz0012005: 感谢给帖子标题标注[已解决]字样PB + 2

  1. findstr "6\.0 无法.*蔬菜" a.txt|sort
复制代码
看得多说得多,远比不上写得多。

TOP

回复 2# weichenxiehou


     6\.0 无法.*蔬菜
该怎么理解呢? 三个关键词中间的那些特殊符号代表什么?

TOP

匹配任意字符

TOP

回复 3# poter


    见顶楼附图:http://bbs.bathome.net/viewthread.php?tid=14682

TOP

本帖最后由 wh1234567 于 2012-6-14 22:33 编辑

回复 2# weichenxiehou


    首先感谢你的回复,可能你没理解我的意思,文本里的行很多,大约25MB,关键词2边不一定是什么字符,现在是只提取同时包含设定的几个关键词的行,并输出
也就是行里同时包含这几个关键词时才输出该整行,将符合条件的行全部输出,不是只输出一行

TOP

回复 4# yangfengoo


    不是匹配任意一个关键词,是同时符合

TOP

回复 7# wh1234567


    那你为什么不事先说明白呢?让别人自己归纳总是费时费力还容易出错的,楼主应该尽可能将已知规律表达清楚。

TOP

这样行不?
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   set "str=%%a"
  4.   setlocal enabledelayedexpansion
  5.   for %%b in (6.0 无法 蔬菜) do (
  6.     if "!str:%%b=!"=="!str!" set nok=1
  7.   )
  8.   if !nok! neq 1 echo !str!
  9.   endlocal
  10. ))>b.txt
复制代码
1

评分人数

    • wh1234567: 呵呵,很合乎我的心意,不知道加上特殊符号 ...技术 + 1

TOP

  1. type *.txt 2>nul|find "6.0"|find ",无法"|find "蔬菜"|sort
复制代码
1

评分人数

    • wh1234567: 高手写的代码对于菜鸟级的学生来说可能会看 ...技术 + 1

TOP

回复 10# CrLf

版主V5,又学一招。

TOP

回复 6# wh1234567
哦,我是按照你顶楼那个输出结果猜测的规律,如果要实现“与”的关系,Crlf版主的多重管道是一解,代码简洁,就是不知道会不会因为文本太大管道太多拉低效率;apang中校的字符串替换也是一种比较好的办法吧,效率应该要高一点儿,算多写代码的回报吧;用gawk其实也可以试试:
  1. gawk "/6\.0/&&/,无法/&&/蔬菜/{print|\"sort\">\"new.txt\"}" a.txt
复制代码
感觉gawk的中文支持不是很好,可能会出问题,也只是为了比较形象地表达“与”的关系而已,估计花在RE匹配和field splitting上的时间也不会少。
1

评分人数

    • wh1234567: 辛苦了,感谢你全方位的点评,呵呵呵技术 + 1
看得多说得多,远比不上写得多。

TOP

本帖最后由 wh1234567 于 2012-6-15 01:23 编辑

版主和weichenxiehou 的代码很简洁,估计处理速度也很快吧,可惜的是我不喜欢用第三方命令程序,设置关键词也不是很方便很容易不小心出错的,我喜欢例如这样的格式(方便集中设置,无需额外程序):
set wenben=数据.txt
set guanjianci=小学 作文
下面是命令...

在此还是很感谢你们几位坛友们,辛苦了......

TOP

本帖最后由 wh1234567 于 2012-6-15 01:41 编辑

回复 9# apang


    我想将输出的处理过程显示在窗口上,不知道咋加代码呢,方便看进度
另外想将 关键词+输出的总行数+当前时间 命名为输出的文件名,不知道是不是麻烦了点?

TOP

回复 7# wh1234567


    我是解释“三个关键词中间的那些特殊符号代表什么”

TOP

返回列表