Board logo

标题: [文本处理] [已解决]批处理如何提取文本中特定的字符串来替换掉文本中指定位置的多个字符串 [打印本页]

作者: luke2    时间: 2016-6-27 22:36     标题: [已解决]批处理如何提取文本中特定的字符串来替换掉文本中指定位置的多个字符串

本帖最后由 pcl_test 于 2016-6-28 23:29 编辑

============================================================================
                     ICOS Bga INSPECTION - BATCH REPORT
-
Start : 5/3/2016 2:24:18 AM                              Version  :       13
-
Batch Name  : 600001164618
Batch Spec. : Skylake2+2LTH                      Lot No.      : 600001164618
……
-
……
    1|   1|   1|   1|A4       200|HW300    -107|EW157      93|      200|  |   |   |X        200|..
    1|   1|   2|   2|A4       127|HW4       -76|DD206      51|      127|  |   |   |X        127|..
……
机台产生很多txt文件,表头都是固定格式,求批量处理把A4替换成Batch Name 后面那一串数字, 如替换后变成下面的效果。
============================================================================
                     ICOS Bga INSPECTION - BATCH REPORT
-
Start : 5/3/2016 2:24:18 AM                              Version  :       13
-
Batch Name  : 600001164618
Batch Spec. : Skylake2+2LTH                      Lot No.      : 600001164618
……
-
……
    1|   1|   1|   1|600001164618       200|HW300    -107|EW157      93|      200|  |   |   |X        200|..
    1|   1|   2|   2|600001164618       127|HW4       -76|DD206      51|      127|  |   |   |X        127|..
……
作者: luke2    时间: 2016-6-28 21:40

gawk "/^Batch Name.+: [0-9]+$/ { replacement = $4 } /[0-9]\|A4/ { sub(\"A4\", replacement) } { print }" input.txt >output.txt

感谢群里的“局外人”代码和他的解说,谢谢,也谢谢大家!
作者: pcl_test    时间: 2016-6-28 23:18

本帖最后由 pcl_test 于 2016-6-29 00:56 编辑
  1. //&cls&more +5 "%~f0"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var txt = WSH.StdIn.ReadAll();
  3. var str = txt.match(/\s*?Batch\s*?Name\s*?:[ \t]*([^\r\n]+)/);
  4. WSH.echo(txt.replace(/([\r\n]([^\|\r\n]+?\|){4})A4/g, '$1'+str[1]));
  5. /*举个栗子
  6. ============================================================================
  7.                      ICOS Bga INSPECTION - BATCH REPORT
  8. -
  9. Start : 5/3/2016 2:24:18 AM                              Version  :       13
  10. -
  11. Batch Name  : 600001164618
  12. Batch Spec. : Skylake2+2LTH                      Lot No.      : 600001164618
  13. ……
  14. -
  15. ……
  16.     1|   1|   1|   1|A4       200|HW300    -107|EW157      93|      200|  |   |   |X        200|..
  17.     1|   1|   2|   2|A4       127|HW4       -76|DD206      51|      127|  |   |   |X        127|..
  18. ……
  19. */
复制代码





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