[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

哦,好的,谢谢版主哦,我去试试

TOP

17# xslxslxsl


加一个感叹号:
sed -i "/^.*\t.*\t.*\t.*\t9\t/!d" ABC*.txt
1

评分人数

TOP

如果仅留下来第五列为9的行,删除其余的行,又如何书写代码呢?

TOP

版主的可以的,非常感谢,谢谢你的耐心指导,同时也非常感谢其他高手的指点,谢谢了,大家真的好热情啊。

TOP

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

TOP

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

TOP

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

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

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

  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

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

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

返回列表