Board logo

标题: [文本处理] 合并文件名到提取的数据中,并第一行加上标题(数据处理急需,谢谢大侠咯!) [打印本页]

作者: morerlee    时间: 2011-9-22 11:34     标题: 合并文件名到提取的数据中,并第一行加上标题(数据处理急需,谢谢大侠咯!)

我分别从1-0.txt,1-1-10.txt,1-1-15.txt,1-1-20.txt,1-1.txt,1-2-10.txt文件中分别提取了以Loss为关键词所在一行形成了a.txt,现要将文件名放在第一列,并删除非数据类字符,即删除或用空格代替C,tand ,C0,Ce,Tu,Loss,FOM,Vmax,V,保留小写字母v,然后在第一行加上标题文字,形成新文件b.txt.(PS:l因为文件很多,我只选其中一部分为例,10v这个小写的v最好不删除,间隔符有的是空格有的是制表符TAB)
a.txt文本如下:
C        LOSS 0.0494
V        C 41.13%(10v)        tand 0.049                C0        Ce        Tu        Loss        FOM        Vmax
V        C 49.52%(15v)        tand 0.064                C0        Ce        Tu        Loss        FOM        Vmax
V        C 56.78%(20v)        tand 0.061                C0        Ce        Tu        Loss        FOM        Vmax
C        LOSS 0.0464
V        C 38.39%(10v)        tand 0.048                C0        Ce        Tu        Loss        FOM        Vmax

b.txt文本如下:

filename                Tu                L       
1-0.txt                                                       0.0494
1-1-10.txt                41.13%(10v)        0.049
1-1-15.txt                49.52%(15v)        0.064
1-1-20.txt                56.78%(20v)        0.061
1-1.txt                                                       0.0464
1-2-10.txt                38.39%(10v)        0.048
作者: morerlee    时间: 2011-9-22 15:00

echo filename                Tu                L >1.txt
copy 1.txt+a.txt b.txt

加标题的方法已经找到
作者: hfg1977    时间: 2011-9-23 12:11

本帖最后由 hfg1977 于 2011-9-23 12:13 编辑

水平有限,只能分两次提取, test code 如下:
  1. sed -n "/\<Loss\>/ s/.*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\%%([0-9]\+v)\).*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\).*/\t\1\t\2/p" a.txt
  2. sed -n "/\<LOSS\>/ s/.*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\).*/\t\t\t\1/p"  a.txt
复制代码
完整过程如下: 一次完成全部工作
  1. @echo off
  2. echo.filename Tu L >b.txt
  3. for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "*.txt"') do (
  4. sed -n "/\<Loss\>/ s/.*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\%%([0-9]\+v)\).*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\).*/%%~nxa\t\1\t\2/p" "%%~a"
  5. sed -n "/\<LOSS\>/ s/.*[ ]\([0-9]\{1,\}\.[0-9]\{1,\}\).*/%%~nxa\t\t\t\1/p"  "%%~a"
  6. )>>b.txt
  7. :end
复制代码

作者: hfg1977    时间: 2011-9-23 17:09

在后面的帖子 有看到LZ问这个问题,
http://bbs.bathome.net/thread-14089-1-1.html
为什么不在一个帖子里解决?  
不会这么多天还没搞定吧?
作者: morerlee    时间: 2011-9-25 19:17

本帖最后由 morerlee 于 2011-9-25 19:18 编辑

回复 4# hfg1977


    是同一个类型的处理,这个帖子是后发的,之前没想到要加文件名进来,后来发现提取后形成的新文件排序有问题,不能每个都对应好,才想到排序,现在解决了文件名跟数据对应,可是不能很好的按文件名来排列数据

主要想解决排序问题

你写的代码测试不能用,说是“sed”不是内部或外部命令,我是新手,有些看不懂,呵呵~
作者: awk    时间: 2011-9-25 19:25

回复 5# morerlee


先去下载一个sed.exe吧




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