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

[文本处理] 文本文档批处理替换

求一个批处理语句,没人会吗?网上的那些工具都没用。如图所示有一个文本2,里面有好多个AA,有一个文本1,里面有对应个数的数据,要求把文本2的AA用文本1的数据按顺讯替换了,换后如图3那样

  1. PowerShell "$a=type 1.txt; [regex]::Replace((type 2.txt) -join \"`r`n\", 'AA', {$a[$global:n++]})"
复制代码
1

评分人数

TOP

回复 14# tigerpower


看到busybox就想起安卓busybox,现在手机安全加强了,解ROOT权限很繁琐(我用小米,刷了开发版系统)
后来发现有个叫 termux 的东西,不需要root,就可以安装/运行 clang nodejs python perl ,特别好用。

TOP

下载busybox
  1. busybox sh -c "sed -b 's/,AA,/,\n,/g' 2.txt|paste -d'\n' - 1.txt|tr -d '\n'"
复制代码
1

评分人数

    • 523066680: 就知道会有一句话方案技术 + 1

TOP

本帖最后由 523066680 于 2018-12-19 08:05 编辑
  1. use File::Slurp;
  2. my @t1 = read_file("1.txt");
  3. my $t2 = read_file("2.txt");
  4. grep { chomp } @t1;
  5. $t2=~s/,AA,/",".(shift @t1).","/ge;
  6. print $t2;
复制代码
1

评分人数

    • tigerpower: 文本处理perl实在是强!技术 + 1

TOP

凑个热闹
  1. $Arr=gc 1.txt #1为纯数字文件;2为待替换文件,会读取整个文档内容。
  2. $Array=(((gc 2.txt) -join "`r`n").replace(',AA,',",AA,`t").split("`t"))
  3. (0..($Arr.count -1))|%{$Array[$_]=$Array[$_].Replace(',AA,',",$($Arr[$_]),")}
  4. $str=-join $Array
  5. $str|sc .\2.txt
复制代码
1

评分人数

    • duancaile: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

本帖最后由 yhcfsr 于 2018-12-18 17:40 编辑

POWERSHELL,保存为ps1格式,与要处理文件放一起,右键执行
  1. $file1='1.txt';#替换数据文本
  2. $file2='2.txt';#需要被替换的源文件
  3. $key='AA';#需要被替换的关键字
  4. $ontent_file1=[io.file]::ReadAllLines($file1);#读文件
  5. $ontent_file2=[io.file]::ReadAllText($file2);#读文件
  6. $result='';$n=0;$lenKey=$key.Length;#变量初始化
  7. while(1)
  8. {
  9. $i=$ontent_file2.IndexOf($key);#查询关键字的首位置
  10. if(($i -ne -1) -and ($ontent_file1[$n])){
  11.     $result+=$ontent_file2.Substring(0,$i)+$ontent_file1[$n];#替换关键字
  12.     $ontent_file2=$ontent_file2.Substring($i+$lenKey);#截取文本
  13. } else {$result+=$ontent_file2;break;}#不含关键字或数据文本结束,则跳出循环
  14.    $n++;
  15. }
  16. $result>'结果.TXT'
复制代码
1

评分人数

    • duancaile: 感谢给帖子标题标注[已解决]字样技术 + 1
QQ 33892006

TOP

回复 7# Batcher



1
2
3
4
5
文本1内容,就5个数字,不带符号

TOP

替换AA.js ,放到1.txt 2.txt同目录,生成结果3.txt
  1. var fso = WScript.CreateObject('Scripting.FileSystemObject');
  2. var file1 = '1.txt';
  3. var file2 = '2.txt';
  4. var file3 = '3.txt';
  5. var curDir = WScript.CreateObject('WScript.Shell').CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName);
  6. var ts1 = fso.OpenTextFile(file1, 1, false, -2);
  7. var ts2 = fso.OpenTextFile(file2, 1, false, -2);
  8. var ts3 = fso.OpenTextFile(file3, 2, true, -2);
  9. if (!ts2.AtEndOfStream) {
  10.   ts3.Write(ts2.ReadAll().replace(/AA/g, function ($0) {
  11.     return ts1.AtEndOfStream ? $0 : ts1.ReadLine();
  12.   }));
  13. }
  14. ts1.close();
  15. ts2.close();
  16. ts3.close();
复制代码
1

评分人数

    • duancaile: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

回复 7# Batcher

文本1内容
1,
2,
3,
4,
5,



文本2内容
47940409,AA,RHEIOFOKDSNFLK,49UI03OFLKFNKL,AA,FKLNBCVNKBNRTOTO,AA,9409UOIFJKLNOJOICVO,AA,FKNVLKNVPTQJOJRANFNL,AA,NFKJNKNVBNBVOREU39U30

TOP

回复 6# duancaile


    两个文件的内容试试能直接发出来吗
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# flashercs

可能我们公司加密了,两个数量是相等的,要是不等就显示一个错误给我就好了,谢谢!!!!

TOP

本帖最后由 flashercs 于 2018-12-18 16:11 编辑

上传的乱码了;
如果文本1的行数比文本2中的AA数量少,怎么办?

TOP

回复 2# Batcher


文本2里的内容可以是随便的,主要是有,AA,这个字符,用文本1的数据按顺序替换,谢谢!

TOP

回复 2# Batcher

这个只是个例子,实际中有很多的数据

TOP

返回列表