标题: [文本处理] 批处理如何实现在多个txt文本的相邻两行之间插入多行特定数据内容 [打印本页]
作者: nihaoareyou 时间: 2016-11-7 10:56 标题: 批处理如何实现在多个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。
作者: pcl_test 时间: 2016-11-7 15:17
- set data='2601.11 5.2','2603.2 29.3','2639.64 29.9'
- 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]"
- pause
复制代码
作者: nihaoareyou 时间: 2016-11-7 15:47
这个powershell怎么运行啊? 请原谅我这个小白问这么白痴的问题
作者: 523066680 时间: 2016-11-7 16:41
perl,可能功力不够,略长- open READ,"<:raw","a.txt";
- open WRT,">:raw","b.txt";
-
- print WRT scalar(<READ>);
- my @all = <READ>;
-
- for my $i (0 .. $#all-1)
- {
- $all[$i] =~/([\d\.]+)\s+/;
- $dpa = $1;
- $all[$i+1] =~/([\d\.]+)\s+/;
- $dpb = $1;
-
- printf(WRT $all[$i]);
- for (my $n = $dpa+0.01; $n < $dpb; $n+=0.01)
- {
- printf(WRT "%.2f -999.25\r\n", $n);
- }
- }
- printf(WRT $all[$#all]);
-
- close READ;
- close WRT;
复制代码
作者: CrLf 时间: 2016-11-8 00:24
本帖最后由 CrLf 于 2016-11-8 00:52 编辑
回复 5# 523066680
取巧解法嗯哼- open READ,"<:raw","a.txt";
- open WRT,">:raw","b.txt";
-
- print WRT scalar(<READ>);
- my @all = <READ>;
- %map = split(/\s+/g);
-
- for($all[0]*100 .. $all[-1]*100){
- $_ /= 100;
- printf WRT "$_\t%s\r\n", exists $map{$_} ? $map{$_} : -999.25 ;
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |