Board logo

标题: [文本处理] 批处理如何删除字符串长度小于指定数值的行并导出? [打印本页]

作者: Rasm    时间: 2022-9-9 10:54     标题: 批处理如何删除字符串长度小于指定数值的行并导出?

  1. 10Ver
  2. 112233..
  3. 11223344Cc
  4. 1142751081Zj
  5. 11我开你
  6. 123321Aa@
  7. 1234-
  8. 1234123123A
  9. 123456789Www
  10. 123456Dc
  11. 12345Dgsg
  12. 1237Yx
  13. 123Bingo
  14. 123_Jkl
复制代码
想把文本中,长度小于 5个字符的内容直接全部删除,并导出到新文本
作者: hfxiang    时间: 2022-9-9 11:25

楼主展示的数据好像都不长(好像不超过15个字符)
试试以下代码:
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set "_strlen=set $=^!#1^!&set $=^!$^!fedcba9876543210&set/a##=0x^!$:~15,1^!"
  4. for /f %%a in (test.txt) do (
  5. set #1=%%a
  6. (%_strlen%)
  7. if !##! GEQ 5 echo;%%a
  8. )
  9. endlocal
复制代码

作者: qixiaobin0715    时间: 2022-9-9 11:40

不用那么复杂:
  1. findstr ..... 1.txt>2.txt
复制代码

作者: hfxiang    时间: 2022-9-9 11:44

如何不介意第3方工具,可用sed ( http://bcn.bathome.net/tool/4.8/sed.exe )就更简单:
  1. sed -n "/^.\{5\}/p" <test.txt>test_out.txt
复制代码

作者: hfxiang    时间: 2022-9-9 11:49

回复 3# qixiaobin0715


    findstr的应用太妙了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2