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

[文本处理] [已解决]批处理如何判断文本中以指定字符分割的每一行的指定字段的数据并进行相应处理

本帖最后由 pcl_test 于 2016-8-9 23:48 编辑

现有一个文件夹中有多个已ABC开头的文本文件(ABC1.TXT,ABC2.TXT......),文本的结构相同,下面数据中的空格实际上系TAB键,以tab键分隔数据
12 34 56 7 9 23
66 7 8 9 9 111
888 7 65 4 0 8
a b2 6t 11 33 6
a b c 6 9 i1
。。。。。。
将第四个空后的数据进行比较,若为9,则将整行删除,留下的数据另存
888 7 65 4 0 8
a b2 6t 11 33 6
。。。。。。
(即对文本数据中的第五列数据进行判断,若为9就将此行删除)
麻烦高手具体指点,不胜感激。
1

评分人数

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

本帖最后由 tmplinshi 于 2011-6-22 23:15 编辑
  1. sed -i "/^.*\t\+.*\t\+.*\t\+.*\t\+9\t\+/d" *.txt
复制代码
sed.exe 4.1.4 下载:
http://bbs.bathome.net/thread-1114-1-1.html

TOP

  1. gawk "$5!=9" a.txt | more >b.txt
复制代码
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

首先感谢楼上的高手辛苦指点,但是sed 的语法上我不是很理解,最好解释一下,谢谢,
gawk 基本上可以看懂,但是它生成的B.TXT中的数据间的分隔符变成空格了,原来是TAB键,望高手再指点一二。
继续等候中,谢谢!

TOP

  1. gawk "$5!=9" a.txt >b.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 tmplinshi 于 2011-6-23 10:55 编辑
sed -i "/^.*\t\+.*\t\+.*\t\+.*\t\+9\t\+/d" *.txt

-i         直接修改文件
^         从行的开头匹配
.*        零个或零个以上任意字符
\t\+     一个或一个以上 tab 符号
d         删除匹配的行

解释完后才发现,会删除这样的行:
[Tab][Tab][Tab][Tab]9[Tab][Tab]

换成这样就不会:
  1. sed -i "/^.\+\t\+.\+\t\+.\+\t\+.\+\t\+9\t\+/d" *.txt
复制代码

TOP

findstr /v
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

  1. @ECHO OFF
  2. For /f "delims=" %%a in ('dir /a-d /b abc*.txt') do (
  3.     (For /f "usebackq delims=" %%b in ("%%a") do (
  4.         For /f "tokens=5" %%c in ("%%b") do if %%c neq 9 echo %%b
  5.     ))>~tem
  6.     move ~tem "%%a"
  7. )
  8. pause
复制代码
1

评分人数

TOP

谢谢大家的指点,但是
12        34        56        7        9        23
66        7        8        9        9        111
888        7        65        4        0        8
a        b2        6t        11        33        6       
a        b        c        6        9        i1
2                FF        3        7       
        33        55        6        9        9
                                        98
                                9        0
                                9       
55        66        8        8        90        768
这样的文本处理就有问题了,望高手继续指点,谢谢!

TOP

9# xslxslxsl


看不出有多少个 tab,要么把 tab 换成其他字符,要么上传附件;
还有,贴一下要处理成什么结果。

TOP

12        34        56        7        9        23
66        7        8        9        9        111
888        7        65        4        0        8
a        b2        6t        11        33        6       
a        b        c        6        9        i1
2                FF        3        7       
        33        55        6        9        9
                                        98
                                9        0
                                9       
55        66        8        8        90        768

这样的文本处理就有问题了,麻烦高手指点,谢谢!

TOP

本帖最后由 zm900612 于 2011-6-23 22:48 编辑
  1. @echo off
  2. for /f "tokens=1*delims=:" %%a in ('
  3.    findstr /bvrc:"[0-Z]*[^0-Z][0-Z]*[^0-Z][0-Z]*[^0-Z][0-Z]*[^0-Z]9\>" *.txt^&del /f /q *.txt>nul
  4. ) do echo>>%%a %%b
复制代码
1

评分人数

TOP

  1. sed -i "/^.*\t.*\t.*\t.*\t9\t/d" ABC*.txt
复制代码

TOP

好像,sed -i "/^.*\t\+.*\t\+.*\t\+.*\t\+9\t\+/d" *.txt
还是可以的哦

TOP

不好意思,刚才没有刷新页面,没有注意到大家的回复,对不起,我刚才将附件上传了,望大家指点,谢谢!

TOP

返回列表