正版王中王香港资料新手入门导读[视频教程]正版王中王香港资料基础视频教程[视频教程]VBS基础视频教程
[正版王中王香港资料文件精品]正版王中王香港资料版照片整理器[正版王中王香港资料文件精品]纯正版王中王香港资料备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] BAT:两组文本数据,如果出现次数相同,则共同删除

本帖最后由 思想之翼 于 2019-9-25 15:31 编辑

例如,E:\数据\内,有A、B两文本
A文本:01 02 03 01 02 03 03 04 05 05 05
B文本:00 02 03 01 02 03 04 04 05
标红数据为A、B两文本均出现,且次数相同,则共同删除
保留结果:
A文本:01 03 05 05
B文本:00 04

本帖最后由 terse 于 2019-9-25 19:14 编辑

P一个
  1. @echo off & setlocal enabledelayedexpansion
  2. cd /d "E:\数据\"
  3. for /f "usebackq tokens=*" %%a in ("a.txt") do for %%b in (%%a) do set/a n+=1&set a!n!=%%b
  4. for /f "usebackq tokens=*" %%a in ("b.txt") do for %%b in (%%a) do set/a m+=1&set b!m!=%%b
  5. for /l %%i in (1,1,!n!) do (
  6. ? ???set "f="
  7. ? ???for /l %%j in (1,1,!m!) do if not defined f if /i "!a%%i!" == "!b%%j!" set a%%i=&set b%%j=&set f=1
  8. )
  9. if !m! gtr !n! set n=!m!
  10. for /l %%i in (1,1,!n!) do (
  11. ? ???if "!a%%i!" neq "" if "!as!" == "" (set as=!a%%i!) else set as=!as! !a%%i!
  12. ? ???if "!b%%i!" neq "" if "!bs!" == "" (set bs=!b%%i!) else set bs=!bs! !b%%i!
  13. )
  14. echo;!as!
  15. echo;!bs!
  16. pause
复制代码
少点FOR
  1. @echo off & setlocal enabledelayedexpansion
  2. cd /d "E:\数据\"
  3. for /f "usebackq tokens=*" %%a in ("a.txt") do for %%b in (%%a) do set /an+=1&set "a!n!=%%b"
  4. for /f "usebackq tokens=*" %%a in ("b.txt") do for %%b in (%%a) do (
  5. ? ???set "f="
  6. ? ???for /l %%c in (1,1,!n!) do if not defined f??if /i "%%b" == "!a%%c!" set "a%%c="&set "f=1"
  7. ? ???if not defined f if defined bs (set bs=!bs! %%b) else set "bs=%%b"
  8. )
  9. for /l %%i in (1,1,!n!) do if defined a%%i if defined as (set as=!as! !a%%i!) else set "as=!a%%i!"
  10. echo;!as!
  11. echo;!bs!
  12. pause
复制代码
1

评分人数

TOP

  1. $a = gc 'e:\数据\a.txt' -ReadCount 0;
  2. $b = gc 'e:\数据\b.txt' -ReadCount 0;
  3. $a1 = $b1 = @();
  4. if ($b.count -ge $a.Count) { $arr = $b.Count }else { $arr = $a.Count }
  5. for ($i = 0; $i -lt $arr; $i++) {
  6. if ($a[$i] -ne $b[$i]) { $a1 += $a[$i]; $b1 += $b[$i] }
  7. }
  8. sc 'e:\数据\a1.txt' -Value $($a1 -join ' ') -Force;
  9. sc 'e:\数据\b1.txt' -Value $($b1 -join ' ') -Force;
复制代码
1

评分人数

QQ: 458609586

TOP

powershell
  1. $arr1 = $(gc??"E:\数据\a.txt").Trim() -Replace "[\r\n\s]+", ' ' -split (' ');
  2. $arr2 = $(gc??"E:\数据\b.txt").Trim() -Replace "[\r\n\s]+", ' ' -split (' ');
  3. (Compare-Object $arr1 $arr2 -PassThru |?{$_.SideIndicator -eq '<='}) -join ' '
  4. (Compare-Object $arr1 $arr2 -PassThru |?{$_.SideIndicator -eq '=>'}) -join ' '
复制代码
1

评分人数

TOP

返回列表