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

[文本处理] 请问bat如何按指定列来删除重复行

  1.   需批量处理多个文件    请问bat如何按指定列来删除重复行
  2. A*B*3 A
  3. A*B*C B
  4. A*B*C A
  5. 需将Tab "\t" 为分隔符  , 不能按 "*" 为分隔符
  6. bat完成按指定第列数值去重复, 例如第 1列,   如果第1列有重复情况,  似乎删那一行都没问题
  7. >*.txt
  8. A*B*3 A
  9. A*B*C B
复制代码

回复 1# 娜美
  1. gawk "!x[$1]++" 1.txt>2.txt
复制代码

TOP

回复 2# hfxiang


awk -F "\t" '!a[$1]++' a
    嗯嗯, 但是我想用bat来实现

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%x in ('dir /b /a-d *.txt') do (
  4. for /f "useback tokens=1-9* delims= " %%a in ("%%x") do (
  5. if %%h equ 1 (
  6. if not defined %%i (
  7.                echo,%%i
  8.                set %%i=1
  9.   )
  10. )))>%%x.txt
  11. endlocal
  12. pause
复制代码
拼凑了一个为什么没有输出呢

TOP

本帖最后由 Five66 于 2023-9-18 20:06 编辑

啊,回错帖子了,已编辑

TOP

本帖最后由 Five66 于 2023-9-18 20:47 编辑

不知行否(改2)
参考
http://www.bathome.net/thread-67375-1-1.html
12楼
  1. @echo off
  2. for %%a in (*.txt) do (
  3. setlocal enabledelayedexpansion
  4. (for /f "usebackq tokens=1-2* delims= " %%i in ("%%a") do (
  5.     if not defined #%%j (
  6.         echo,%%i %%j %%k
  7.         set #%%j=1
  8.     )
  9. ))>"___new-%%a.txt"
  10. endlocal
  11. )
  12. pause
复制代码

TOP

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3. cd.>"%%~ni_2%%~xi"
  4. for /f "useback tokens=1* delims= " %%a in ("%%i") do (
  5. findstr /bc:"%%a " "%%~ni_2%%~xi" 1>nul
  6. if errorlevel 1 (
  7. >>"%%~ni_2%%~xi" echo %%a %%b
  8. )
  9. )
  10. )
  11. pause
复制代码
bat小白,请多指教!谢谢!

TOP

多谢楼上3位大哥哥

TOP

  1. @echo off
  2. set n=2
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.      setlocal enabledelayedexpansion
  5.      for /f "useback delims=" %%j in ("%%i") do (
  6.           for /f "tokens=%n%" %%k in ("%%j") do (
  7. if not defined #%%k (
  8.                     echo,%%j
  9.                     set #%%k=1
  10.                )
  11.           )
  12.      )
  13.     endlocal
  14. )
  15. pause
复制代码

TOP

回复 6# Five66


    结果不准确

TOP

回复 7# 77七


   虽然区分了大小写, 但 似乎不支持特殊字符,  是不是循环内部问题呢

TOP

回复 11# 娜美


   
findstr的问题,只是提供一种思路,区别大小写。
比如文本没有特殊符号,只需要区别大小写查重,”适用“就行。
bat小白,请多指教!谢谢!

TOP

返回列表