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

[文本处理] 批处理如何实现在多个txt文本的相邻两行之间插入多行特定数据内容

连续插入多行【着急,跪求大神帮助】
很多TXT文件,特征如下:第一列为深度,第二列为含量
深度           含量
2601.11        5.2
2603.2        29.3
2639.64        29.9
如何能批量按深度0.01米连续插入行,含量值均为-999.25,如下:
深度        含量       
2601.11         5.2       
.........      -999.25
........        -999.25       
2603.2         29.3       
.. .......     -999.25
........        -999.25       
2639.64         29.9
最终插入后的深度数据间隔0.01米,含量数据均为-999.25。
1

评分人数

  1. set data='2601.11        5.2','2603.2        29.3','2639.64        29.9'
  2. powershell -c "$a=%data%;0..($a.count-2)|%%{$a[$_];$b=$a[$_] -split '\s+';$c=$a[($_)+1] -split '\s+';$d=1*$b[0];while($d -lt ($c[0]-0.01)){$d+=0.01;'{0:0.00}      -999.25' -f $d}};$a[-1]"
  3. pause
复制代码

TOP

这个powershell怎么运行啊?  请原谅我这个小白问这么白痴的问题

TOP

perl,可能功力不够,略长
  1. open READ,"<:raw","a.txt";
  2. open WRT,">:raw","b.txt";
  3. print WRT scalar(<READ>);
  4. my @all = <READ>;
  5. for my $i (0 .. $#all-1)
  6. {
  7.     $all[$i] =~/([\d\.]+)\s+/;
  8.     $dpa = $1;
  9.     $all[$i+1] =~/([\d\.]+)\s+/;
  10.     $dpb = $1;
  11.     printf(WRT $all[$i]);
  12.     for (my $n = $dpa+0.01; $n < $dpb; $n+=0.01)
  13.     {
  14.         printf(WRT "%.2f       -999.25\r\n", $n);
  15.     }
  16. }
  17. printf(WRT $all[$#all]);
  18. close READ;
  19. close WRT;
复制代码

TOP

本帖最后由 CrLf 于 2016-11-8 00:52 编辑

回复 5# 523066680


    取巧解法嗯哼
  1. open READ,"<:raw","a.txt";
  2. open WRT,">:raw","b.txt";
  3. print WRT scalar(<READ>);
  4. my @all = <READ>;
  5. %map = split(/\s+/g);
  6. for($all[0]*100 .. $all[-1]*100){
  7. $_ /= 100;
  8. printf WRT "$_\t%s\r\n", exists $map{$_} ? $map{$_} : -999.25 ;
  9. }
复制代码
1

评分人数

TOP

返回列表