标题: [文本处理] 【已解决】BAT:两组文本数据,如果出现次数相同,则共同删除 [打印本页]
作者: 思想之翼 时间: 2019-9-25 11:23 标题: 【已解决】BAT:两组文本数据,如果出现次数相同,则共同删除
本帖最后由 思想之翼 于 2019-9-27 02:38 编辑
例如,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 16:55
本帖最后由 terse 于 2019-9-25 19:14 编辑
P一个- @echo off & setlocal enabledelayedexpansion
- cd /d "E:\数据\"
- for /f "usebackq tokens=*" %%a in ("a.txt") do for %%b in (%%a) do set/a n+=1&set a!n!=%%b
- for /f "usebackq tokens=*" %%a in ("b.txt") do for %%b in (%%a) do set/a m+=1&set b!m!=%%b
- for /l %%i in (1,1,!n!) do (
- set "f="
- 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
- )
- if !m! gtr !n! set n=!m!
- for /l %%i in (1,1,!n!) do (
- if "!a%%i!" neq "" if "!as!" == "" (set as=!a%%i!) else set as=!as! !a%%i!
- if "!b%%i!" neq "" if "!bs!" == "" (set bs=!b%%i!) else set bs=!bs! !b%%i!
- )
- echo;!as!
- echo;!bs!
- pause
复制代码
少点FOR- @echo off & setlocal enabledelayedexpansion
- cd /d "E:\数据\"
- for /f "usebackq tokens=*" %%a in ("a.txt") do for %%b in (%%a) do set /an+=1&set "a!n!=%%b"
- for /f "usebackq tokens=*" %%a in ("b.txt") do for %%b in (%%a) do (
- set "f="
- for /l %%c in (1,1,!n!) do if not defined f if /i "%%b" == "!a%%c!" set "a%%c="&set "f=1"
- if not defined f if defined bs (set bs=!bs! %%b) else set "bs=%%b"
- )
- 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!"
- echo;!as!
- echo;!bs!
- pause
复制代码
作者: xczxczxcz 时间: 2019-9-25 18:04
- $a = gc 'e:\数据\a.txt' -ReadCount 0;
- $b = gc 'e:\数据\b.txt' -ReadCount 0;
- $a1 = $b1 = @();
- if ($b.count -ge $a.Count) { $arr = $b.Count }else { $arr = $a.Count }
- for ($i = 0; $i -lt $arr; $i++) {
- if ($a[$i] -ne $b[$i]) { $a1 += $a[$i]; $b1 += $b[$i] }
- }
- sc 'e:\数据\a1.txt' -Value $($a1 -join ' ') -Force;
- sc 'e:\数据\b1.txt' -Value $($b1 -join ' ') -Force;
复制代码
作者: terse 时间: 2019-9-25 20:49
powershell- $arr1 = $(gc "E:\数据\a.txt").Trim() -Replace "[\r\n\s]+", ' ' -split (' ');
- $arr2 = $(gc "E:\数据\b.txt").Trim() -Replace "[\r\n\s]+", ' ' -split (' ');
- (Compare-Object $arr1 $arr2 -PassThru |?{$_.SideIndicator -eq '<='}) -join ' '
- (Compare-Object $arr1 $arr2 -PassThru |?{$_.SideIndicator -eq '=>'}) -join ' '
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |