请教日常文本txt文件处理,提取(我编辑了一下,txt格式有变)

  • s
    summerblue52
    近期有一批数据,有个几百M,存储于txt文本类型中,如附件,想批量提取的是文本中的下图内容,请教各位处理方法和思路,谢谢
    更新了一下附件的txt内容, 主要是在内容上,实际上,根据不同的查询内容,是会吐出不同的内容的

    Snip20200622_19.png

    test202002.txt(2.08 KB)
  • o
    oldkingdog
    python
  • f
    fangqiank
    excel
  • 退
    退休工人
    Python处理,很好搞的。
  • x
    xzap
    用awk
  • p
    pluck
    EXCEL就行,导入文本,分隔符看你文档中是用的TAB还是什么,几分钟搞定。。。
  • F
    FQX
    几百兆怕是excel搞不定。
    试试power bi
    或者python里面用pandas iOS fly ~
  • d
    davidchiu
    试一下splunk
  • 汗蝈蝈
    findstr /?
  • p
    ph_d
    过于简单 python 连第三方库都不需要 iOS fly ~
  • s
    summerblue52
    几百M,Excel尝试过,暂时不考虑...
  • s
    summerblue52
    回复5#xzap

    完全不会
  • 风过留声
    python逐行读
    把不是的行抛掉
    是的行按实际情况处理分隔符读字段
  • l
    luntana
    grep 激活 test2020.txt > temp.txt
  • u
    umqcn
    难道标准答案不是vim?
  • e
    euzen
    支持这个答案。
    还有一个findstr也好使。 iOS fly ~
  • e
    euzen
    grep和findstr三几分钟就可以完成工作了,如果要进一步处理,比如将每一行分割成几个单元,才需要awk和Python出手。 iOS fly ~
  • z
    zhouxl2000
    sed;或者emeditor有个查找提取
  • s
    summerblue52
    回复13#风过留声

    这个我尝试过,困在了如何识别哪行要读取因为红框中的内容会有所不同,但是基本格式一样
  • s
    summerblue52
    回复19#zhouxl2000

    emeditor 是有个提取常用字符串的功能,不过他提取的内容比较杂,有用没用的都提了出来
  • s
    summerblue52
    回复14#luntana


    ++1还有个小问题,这个关键字不一定是激活,还可能有其它,不能穷尽,有没有更好的处理方式
  • r
    rihkddd
    回复22#summerblue52

    正则表达式。
  • z
    zhouxl2000
    回复21#summerblue52
    很精准:查找^\d+\s+南山路门店.*?激活
    提取的结果:


    211 南山路门店_211 211 激活
    212 南山路门店_212 212 激活
    211 南山路门店2_211 211 激活
    212 南山路门店2_212 212 激活
  • a
    awk
    grep “激活”

    就行
  • a
    awk
    你给个完整点的文本 看了下这个格式 基本上一行代码搞定
  • z
    zhenyue
    说实话这是每个unix 运维都会的, 天天看日志, 只提取日志中某个模式的行。

    vim , grep , sed , awk , sort
    关键字: 让文本飞

    一行代码的事情
  • w
    wuyanzhicheng
    试试python吧 应该没问题 测试了一下
    f = open('test2020.txt',encoding='utf-8') #打开文件
    line = f.readline() #逐行读取
    while line:
    if '激活' in line: #判断此行有没有包含激活
    print(line, end = '') #包含则打印出来
    line = f.readline()
    f.close()
    输出结果:
    211 南山路门店_211 211 激活
    212 南山路门店_212 212 激活
    211 南山路门店2_211 211 激活
    212 南山路门店2_212 212 激活

    仅作测试,所以直接print了,实际使用可以将结果保存到新文件
  • s
    summerblue52
    谢谢楼上
  • s
    summerblue52
    test202002.txt(2.08 KB) 回复26#awk

    有勞
  • a
    awk
    不全是激活吗?
  • s
    summerblue52
    回复31#awk

    有不同的命令,会出现不同的结果最后吐出的包会包含多个这种混合的结果
    取主要取 门店地址以下,结果个数以上的内容
    和第一图显示的位置类似
  • s
    summerblue52
    回复24#zhouxl2000

    thanks确实,针对只是近期销售这个命令,最后吐出的内容,可以用您的正则完美匹配
    我改了下txt的类型,和实际更符合,它是一种混合结果----见我新更新的txt
    还请帮忙看看
  • s
    summerblue52
    回复31#awk

    这种混合的方式有点不好处理
  • p
    ptcptr
    看样子只能取以下2行中间的行
    ------------------
    (结果个数 =


    另外lz的数据可能是这样的,如果按表头模式来看的话
  • a
    awk
    简单啊 结果要分开吗? 门店和个人
  • s
    summerblue52
    回复28#wuyanzhicheng

    因为涉及到对混合结果的查询python处理我的想法是先找------------
    这个标识行,再往下找,到到---END行,处理这中间部分内容

    无奈语言不熟悉,您看看...
  • s
    summerblue52
    回复36#awk
    要分开我后期想到这些内容存到sqlite中
  • s
    summerblue52
    回复35#ptcptr
    是的,取---------和--end之间的内容或者取------和(结果 之间的内容
  • j
    josses
    正则 , textpro 可以了
  • z
    zhouxl2000
    回复33#summerblue52
    Emeditor
    查找:^\d\d\d\s+[^\s]*\s+[^\s]*\s+[^\s]*\s+$
    提取:
    211 南山路门店_211 211 激活
    212 南山路门店_212 212 激活
    211 南山路门店2_211 211 激活
    212 南山路门店2_212 212 激活
    211 可用 正常 0-0-7
    212 可用 正常 0-0-7
    213 可用 正常 0-0-7
  • f
    freerock
    grep直接就搞定了吧 iOS
  • s
    summerblue52
    回复42#freerock

    gogo来一发,肌肉哥
  • s
    summerblue52
    Snip20200622_21.png回复41#zhouxl2000

    请教正则,取上面结果怎么取
  • z
    zhouxl2000
    回复44#summerblue52
  • h
    hotlee
    execl用筛选不行吗?简单 直观
  • s
    summerblue52
    回复46#hotlee

    可以的,少量数据,文本大了吃不消...
  • s
    summerblue52
    回复45#zhouxl2000

    确实ok,如果只提取附件文本中单个内容的话能否提取两个不同行之间的内容

    Snip20200622_21.png
  • z
    zhouxl2000
    回复48#summerblue52

    不是很清楚你需要提取哪些数据,能否列举所有要提取的内容的形式?
  • z
    zhouxl2000
    回复48#summerblue52

    不同行之间数据,存在行数不定,使用sed比较方便。例如:查找“------------------” 与“--- END”之间的内容,在dos下输入:
    sed -e "/------------------/,/--- END/!d" test202002.txt>202002.txt

    结果:
    ------------------
    门店地址 门店名称 门店标识 销售业绩

    211 南山路门店_211 211 激活
    212 南山路门店_212 212 激活
    (结果个数 = 2)


    --- END
    ------------------
    门店地址 门店名称 门店标识 销售业绩

    211 南山路门店2_211 211 激活
    212 南山路门店2_212 212 激活
    (结果个数 = 2)


    --- END
    ------------------
    标识 状态 状态说明

    211 可用 正常 0-0-7
    212 可用 正常 0-0-7
    213 可用 正常 0-0-7
    (结果个数 = 3)


    --- END