标题: [文本处理] 请问bat如何按指定列来删除重复行 [打印本页]
作者: 娜美 时间: 2023-9-18 14:59 标题: 请问bat如何按指定列来删除重复行
- 需批量处理多个文件 请问bat如何按指定列来删除重复行
- A*B*3 A
- A*B*C B
- A*B*C A
-
- 需将Tab "\t" 为分隔符 , 不能按 "*" 为分隔符
- bat完成按指定第列数值去重复, 例如第 1列, 如果第1列有重复情况, 似乎删那一行都没问题
-
- >*.txt
- A*B*3 A
- A*B*C B
复制代码
作者: hfxiang 时间: 2023-9-18 17:10
回复 1# 娜美 - gawk "!x[$1]++" 1.txt>2.txt
复制代码
作者: 娜美 时间: 2023-9-18 17:19
回复 2# hfxiang
awk -F "\t" '!a[$1]++' a
嗯嗯, 但是我想用bat来实现
作者: 娜美 时间: 2023-9-18 19:54
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%x in ('dir /b /a-d *.txt') do (
- for /f "useback tokens=1-9* delims= " %%a in ("%%x") do (
- if %%h equ 1 (
- if not defined %%i (
- echo,%%i
- set %%i=1
- )
- )))>%%x.txt
- endlocal
- pause
复制代码
拼凑了一个为什么没有输出呢
作者: Five66 时间: 2023-9-18 19:58
本帖最后由 Five66 于 2023-9-18 20:06 编辑
啊,回错帖子了,已编辑
作者: Five66 时间: 2023-9-18 20:18
本帖最后由 Five66 于 2023-9-18 20:47 编辑
不知行否(改2)
参考
http://www.bathome.net/thread-67375-1-1.html
12楼- @echo off
- for %%a in (*.txt) do (
- setlocal enabledelayedexpansion
- (for /f "usebackq tokens=1-2* delims= " %%i in ("%%a") do (
- if not defined #%%j (
- echo,%%i %%j %%k
- set #%%j=1
- )
- ))>"___new-%%a.txt"
- endlocal
- )
- pause
复制代码
作者: 77七 时间: 2023-9-18 21:21
- @echo off
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- cd.>"%%~ni_2%%~xi"
- for /f "useback tokens=1* delims= " %%a in ("%%i") do (
- findstr /bc:"%%a " "%%~ni_2%%~xi" 1>nul
- if errorlevel 1 (
- >>"%%~ni_2%%~xi" echo %%a %%b
- )
- )
- )
- pause
复制代码
作者: 娜美 时间: 2023-9-18 21:52
多谢楼上3位大哥哥
作者: terse 时间: 2023-9-18 22:17
- @echo off
- set n=2
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- setlocal enabledelayedexpansion
- for /f "useback delims=" %%j in ("%%i") do (
- for /f "tokens=%n%" %%k in ("%%j") do (
- if not defined #%%k (
- echo,%%j
- set #%%k=1
- )
- )
- )
- endlocal
- )
-
- pause
复制代码
作者: 娜美 时间: 2023-9-19 09:00
回复 6# Five66
结果不准确
作者: 娜美 时间: 2023-9-19 09:03
回复 7# 77七
虽然区分了大小写, 但 似乎不支持特殊字符, 是不是循环内部问题呢
作者: 77七 时间: 2023-9-19 09:13
回复 11# 娜美
findstr的问题,只是提供一种思路,区别大小写。
比如文本没有特殊符号,只需要区别大小写查重,”适用“就行。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |