标题: [文本处理] 文本每行开头结尾添加 数据很多 几百万??快速?bat? [打印本页]
作者: idc878787 时间: 2023-8-26 23:14 标题: 文本每行开头结尾添加 数据很多 几百万??快速?bat?
文本每行开头结尾添加 数据很多 几百万??快速?bat?
作者: Five66 时间: 2023-8-27 01:53
不知,下面,代码,行否?- @echo off
- set distart=每行开头添加的内容
- set diend=每行结尾添加的内容
- set "difile=文件名或文件路径"
- rem 执行后输出生成的文件名为aaaaaa.aaaaaa
-
- (for /f "delims=" %%a in ('findstr /n .* %difile%') do (
- set "str=%%a"
- set "a=%distart%"
- set "b=%diend%"
- setlocal enabledelayedexpansion
- echo,!a!!str:*:=!!b!
- endlocal
- ))>aaaaaa.aaaaaa
-
- pause&exit/b
复制代码
作者: Five66 时间: 2023-8-27 01:56
啊,添加的内容和文件改成自己需要的,最好都都都不要有特殊字符
作者: 77七 时间: 2023-8-27 02:29
本帖最后由 77七 于 2023-8-27 03:15 编辑
回复 2# Five66
不保留空行使用批处理还行。使用for /f (findstr)很慢。
作者: 77七 时间: 2023-8-27 03:20
使用临时文件,应该快点。- @echo off
- rem str1 str2 如果不含特殊符号,直接修改就行
- findstr /n .* 1.txt > $
- (for /f "useback tokens=1* delims=:" %%a in ("$") do (
- if "%%b" neq "" (
- echo str1%%bstr2
- ) else (
- echo=
- )
- ))>2.txt
- del $
- pause
复制代码
作者: idc878787 时间: 2023-8-27 07:50
使用临时文件,应该快点。
77七 发表于 2023-8-27 03:20
有没有更快的方式?这个有也是慢?
作者: idc878787 时间: 2023-8-27 07:50
不知,下面,代码,行否?
Five66 发表于 2023-8-27 01:53
有没有更快的方式?这个有也是慢?
作者: pd1 时间: 2023-8-27 09:07
快和慢都是相对的,你可以给一个量化的指标,比如一百万行几秒内
作者: buyiyang 时间: 2023-8-27 09:29
- gawk "{print(NF?\"开头添加\"$0\"结尾添加\":\"\")}" 1.txt > 2.txt
复制代码
作者: Five66 时间: 2023-8-27 16:12
这样应该快很多吧- @if (0)//==(0)// echo off&pause&cscript //nologo -e:jscript "%~f0"&pause&exit
- @end
-
- //修改下面英文双引号里面的内容为自己需要的
- var distart="每行开头添加的内容";
- var diend="每行结尾添加的内容";
- var difile="文件名或文件路径";//路径使用双反斜杠\\
-
- var dienc="gb2312";//文件编码
- var diotf="输出的文件名或路径";//路径使用双反斜杠\\
-
- //=========================
- var inf=new ActiveXObject('adodb.stream');
- var otf=new ActiveXObject('adodb.stream');
- inf.Type=2;inf.Charset=dienc;inf.Open();
- inf.LoadFromFile(difile);inf.Position=0;
- otf.Type=2;otf.Charset=dienc;otf.Open();
- while(!inf.EOS)
- {
- otf.WriteText(distart);
- otf.WriteText(inf.ReadText(-2),0);
- otf.WriteText(diend+"\r\n");
- }
- otf.SaveToFile(diotf,2);
- inf.Close();otf.Close();
复制代码
作者: czjt1234 时间: 2023-8-27 16:15
要速度快还是推荐第三方程序,比如9楼的gawk
作者: idc878787 时间: 2023-8-27 16:35
回复 9# buyiyang
谢谢 这个好
作者: qixiaobin0715 时间: 2023-8-28 10:10
本帖最后由 qixiaobin0715 于 2023-8-28 15:28 编辑
按照4楼所说,如果每行前后分别添加a、b,忽略空行输出,不考虑第三方,若使用纯P,最简单也是最快的方法:- @echo off
- (for /f "delims=" %%i in (a.txt) do echo,a%%ib)>b.txt
- pause
复制代码
作者: Batcher 时间: 2023-8-28 22:28
回复 1# idc878787
推荐使用第三方命令行工具 sed.exe
http://bcn.bathome.net/s/tool/index.html?key=sed- sed "s/^/开头添加/;s/$/结尾添加/" 1.txt > 2.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |