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

[文本处理] 批处理如何删除txt文本中大于或小于10个字符的行?

如何删除txt中大于 10 位数或小于 10 位数的行?请教各位高手啊?在此,先谢谢了!
txt文件内容如下:

1234567890
adassdscxv
abcdefghij
_+";?.,asd
123456789001234
xcvfxbvfvcbbmn,hjkhkl
sdgdfgfdhgflkili66545
abcdefghijklllsa
0998766666dsgdsg
12345
0987
aad

只有十个数字或字母的是前面四排,批处理后,只要是大于10位和小于10位数的行全部删除。
就是说,除了前面四排,后面都不要。

CUer老大在二楼的代码可以完美解决下面 a.txt 编码格式的文件,也就是每组数字后面都有一个回车的文件。
但无法解决aa.txt这种编码格式的文件,这种文件是BT4下的密码文件,我不知道那个黑色的方块是如何打出来的,不能复制,所以无法替换为回车符。
请问aa.txt是什么编码形式的txt文件,怎样和正常的txt文件相互转换?
肯请各位老大帮忙,多谢多谢!

  1. findstr "^..........$" a.txt >b.txt
复制代码
1

评分人数

TOP

谢谢CUer老大,不知是什么原因,用你以上的代码,删除我给的上面的txt文件,没有一点问题!但是,我的实际txt文件有25万多行,2.5M大小。执行代码后,产生的b.txt为0字节,空白的!盼解决!多谢多谢老大啊!!!

TOP

txt内容改为如下数字后,执行代码b也为0字节

00000000
000000000
0000000000
00000000000
000000000000
0000000000000
00000000000000
000000000000000
0000000000000000
0000000000000000000000
000000000000000000000000
0000000000000000000000000

TOP

代码没错,你会不会文件名弄错了
还有就是文件格式不对
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

楼上说得对,帮我找到原因了。确实是格式不对!但我不知道怎么把格式改过来!截图如下:
正常的文件截图:

1234567890
adassdscxvv
abcdefghij
_+";?.,asd
123456789001234
xcvfxbvfvcbbmn,hjkhkl
sdgdfgfdhgflkili66545
abcdefghijklllsa
0998766666dsgdsg
12345
0987
aad


不能使用,需要转格式的文件截图:

我把这个txt文件的内容粘贴如下,一点都看不出格式不一样
00000000
000000000
0000000000
00000000000
000000000000
0000000000000
00000000000000
000000000000000
0000000000000000
0000000000000000000000
000000000000000000000000
0000000000000000000000000
我怎样把格式改成为第一个图那样呢?请高手指点啊!在此多谢多谢了!!!

TOP

补正常文件截图

TOP

回复 6# cm535
  1. sed "/^.\{10\}$/!d" a.txt >b.txt
复制代码

TOP

回复 6# cm535 sed "/^.\{10\}$/!d" a.txt >b.txt
复制代码

CUer老大,我试了一下,还是不行!
这是我的txt文件,请老大试一试,多谢多谢了!非常感谢!

TOP

好难理解...

===========================================
如何删除txt中大于10位和小于10位的数字行?


按这个要求,结果应该是红色部分被删除:

1234567890
adassdscxvv
abcdefghij
_+";?.,asd
123456789001234 ← 大于 10 位的数字行
xcvfxbvfvcbbmn,hjkhkl
sdgdfgfdhgflkili66545
abcdefghijklllsa
0998766666dsgdsg
12345 ← 小于 10 位的数字行
0987 ← 小于 10 位的数字行
aad

===========================================
可是你最后一句却说:
就是说,除了前面四排,后面都不要。

结果为:
1234567890
adassdscxvv
abcdefghij
_+";?.,asd
123456789001234
xcvfxbvfvcbbmn,hjkhkl
sdgdfgfdhgflkili66545
abcdefghijklllsa
0998766666dsgdsg
12345
0987
aad

这样看来的话,楼主的意思是只保留 10 个字符的行,可是第二行却是 11 个字符的。。

理解你的题意真是太痛苦了...
===========================================
你弄错了两个地方:
    1. 应该是删除大于 10 位数或小于 10 位数的行,而不是“如何删除txt中大于10位和小于10位的数字行?”
    2. 测试数据不小心弄错了,第二行多了一位。
===========================================
如果是这么理解的话,希望楼主在顶楼更新一下,以免后来者痛苦。

TOP

回复 9# cm535


请把附件上传到顶楼,以便他人下载测试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# cm535 sed "/^.\{10\}$/!d" a.txt >b.txt
复制代码

CUer老大,我试了一下,还是不行!
这是我 ...
cm535 发表于 2011-7-24 15:10



    我测试是可以的。不会没下载 sed 吧?

TOP

回复 9# cm535


我试了,行。
可能是你的sed版本有问题吧。我用的4.2.1

TOP

本帖最后由 tmplinshi 于 2011-7-24 19:39 编辑

aa.txt 里面只有换行符(0A),没有回车符(0D)。

多谢 CUer 提醒。more 有极限值,6 万多行的时候会暂停。所以以下命令不能处理楼主的文本。
  1. more aa.txt | findstr "^..........$" >aa_10.txt
复制代码

TOP

回复 14# tmplinshi


3楼说实际txt文件有25万多行,more命令不是有限制吗?

TOP

返回列表