标题: [文本处理] 批处理如何提取特定内容重复的行?[已解决] [打印本页]
作者: 每天几分 时间: 2022-11-28 17:08 标题: 批处理如何提取特定内容重复的行?[已解决]
本帖最后由 每天几分 于 2022-11-28 22:56 编辑
文本1- 进行 jbxk
- 还有 hdyz
- 见家长 jjv
- 中国 vsgohl
- 进行 jbhhrj
- 进行 jbxkrj
- 进行 jbhgrj
- 进行 jbhkrj
- 已经 yijkns
- 还有 hdyzde
- 还有 hryzde
- 见家长 xjvta
- 见家长 jjvta
- ……
- 君不见高堂明镜悲白发 jbjf
- 君不见高堂明镜悲白发 jbxfv
- 君不见高堂明镜悲白发 jbjfv
- ……
复制代码
实现如下:
文本2- ……
- 进行 jbxkrj
- 还有 hdyzde
- 见家长 jjvta
- 君不见高堂明镜悲白发 jbjfv
- ……
复制代码
即:如果后面行部分内容,跟前面行重复,则提取出来。
多谢楼下各位的帮助
作者: WHY 时间: 2022-11-28 20:02
- @echo off
- PowerShell "$arr = gc 1.txt -Read 0; $len = $arr.Count-1; $out = for($i=0; $i -lt $len; $i++){$arr[($i+1)..$len] -match ([regex]::Escape($arr[$i]) + '.+$')} sc 2.txt -Value $out"
- pause
复制代码
作者: Batcher 时间: 2022-11-28 20:13
回复 1# 每天几分 - @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /f "tokens=1,2" %%i in ('type "1.txt"') do (
- if not defined %%i (
- set "%%i=1"
- ) else (
- set "_%%i=%%j"
- )
- )
- (for /f "tokens=1* delims==" %%i in ('set _') do (
- set "str=%%i"
- echo !str:~1! %%j
- ))>"2.txt"
- endlocal
复制代码
作者: hfxiang 时间: 2022-11-28 21:27
- gawk "!b[$1]{a[++N]=$1}{b[$1]=$0;c[$1]++}END{for(i=0;i++<N;)if(c[a[i]]>1)print b[a[i]]}" 1.txt>2.txt
复制代码
作者: terse 时间: 2022-11-28 22:03
最近都是去重题- PowerShell "cat .\1.txt|group {$_.split(\" \")[0]}|?{ $_.Count -gt 1 }|%% { $_.group[-1]}"
复制代码
作者: aloha20200628 时间: 2022-11-29 00:15
本帖最后由 aloha20200628 于 2022-11-29 00:19 编辑
试用 more+findstr 提炼一下纯P代码...
- @echo off &setlocal enabledelayedexpansion
- set/a "m=0"
- (for /f "delims=" %%s in (1.txt) do (
- set/a "m+=1"
- more +!m! "1.txt"|findstr /i /c:"%%~s"
- ))>2.txt
- endlocal&exit/b
复制代码
作者: WHY 时间: 2022-11-29 13:53
楼主每次提问都让人匪夷所思。
既然要提取最后一个重复项,为啥又说"部分内容相同"?文本2也是驴唇不对马嘴。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |