Board logo

标题: [文本处理] 【已解决】BAT:如何删除或保留指定字符数的行 [打印本页]

作者: 思想之翼    时间: 2023-10-10 07:46     标题: 【已解决】BAT:如何删除或保留指定字符数的行

本帖最后由 思想之翼 于 2023-10-10 09:36 编辑

d:\data\a.txt 每行数值以空格隔开:
123 258
001
999 888 777 666
555
333 779

【问题1】如何用BAT,删除只有1个数值的行?
结果为:
123 258
999 888 777 666
333 779

【问题2】如何用BAT,删除只有2个数值的行?
结果为:
001
999 888 777 666
555

【问题3】如何用BAT,删除只有1-2个数值的行?
结果为:
999 888 777 666

【问题4】如何用BAT,保留只有1个数值的行?
结果为:
001
555

【问题5】如何用BAT,保留只有2个数值的行?
结果为:
123 258
333 779

【问题6】如何用BAT,保留只有1-2个数值的行?
结果为:
123 258
001
555
333 779
作者: 77七    时间: 2023-10-10 08:48

  1. rem 【问题1】如何用BAT,删除只有1个数值的行?
  2. findstr /rvc:"^[0-9][0-9]* *$" a.txt >b.txt
  3. rem 【问题2】如何用BAT,删除只有2个数值的行?
  4. findstr /rvc:"^[0-9][0-9]*  *[0-9][0-9]* *$" a.txt >b.txt
  5. rem 【问题3】如何用BAT,删除只有1-2个数值的行?
  6. findstr /rc:"^[0-9][0-9]*  *[0-9][0-9]*  *[0-9]" a.txt >b.txt
  7. rem 【问题4】如何用BAT,保留只有1个数值的行?
  8. findstr /rc:"^[0-9][0-9]* *$" a.txt >b.txt
  9. rem 【问题5】如何用BAT,保留只有2个数值的行?
  10. findstr /rc:"^[0-9][0-9]*  *[0-9][0-9]* *$" a.txt >b.txt
  11. rem 【问题6】如何用BAT,保留只有1-2个数值的行?
  12. findstr /rvc:"^[0-9][0-9]*  *[0-9][0-9]*  *[0-9]" a.txt >b.txt
复制代码

作者: hfxiang    时间: 2023-10-10 08:52

回复 1# 思想之翼

针对楼主的样本,用gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )实现如下
  1. 【问题 1】如何用 BAT,删除只有 1 个数值的行?
  2. gawk "NF>1" a.txt>b.txt
  3. 结果为:
  4. 123 258
  5. 999 888 777 666
  6. 333 779
  7. 【问题 2】如何用 BAT,删除只有 2 个数值的行?
  8. awk "NF!=2" a.txt>b.txt
  9. 结果为:
  10. 001
  11. 999 888 777 666
  12. 555
  13. 【问题 3】如何用 BAT,删除只有 1-2 个数值的行?
  14. gawk "NF>2" a.txt>b.txt
  15. 结果为:
  16. 999 888 777 666
  17. 【问题 4】如何用 BAT,保留只有 1 个数值的行?
  18. gawk "NF==1" a.txt>b.txt
  19. 结果为:
  20. 001
  21. 555
  22. 【问题 5】如何用 BAT,保留只有 2 个数值的行?
  23. gawk "NF==2" a.txt>b.txt
  24. 结果为:
  25. 123 258
  26. 333 779
  27. 【问题 6】如何用 BAT,保留只有 1-2 个数值的行?
  28. gawk "NF<=2" a.txt>b.txt
  29. 结果为:
  30. 123 258
  31. 001
  32. 555
  33. 333 779
复制代码





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