返回列表 发帖
好难理解...

===========================================
如何删除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

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

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



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

TOP

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

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

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

TOP

回复  tmplinshi


3楼说实际txt文件有25万多行,more命令不是有限制吗?
CUer 发表于 2011-7-24 19:21



    忘记了...

TOP

回复 16# cm535


GNU sed v4.0.7 单文件版(使用 -i 参数不生成备份文件)
http://bathome.net/thread-13353-1-1.html

TOP

回复 22# cm535


转换成标准的换行(0D0A):
  1. sed -i "s/$/\r/" aa.txt
复制代码

TOP

本帖最后由 tmplinshi 于 2011-7-24 23:14 编辑
非常感谢CUer及斑竹!
另外,如果是要删除txt中大于 12 位的数和小于 8 位数的行,又怎么办呢?不好意思, ...
cm535 发表于 2011-7-24 22:43



保留 8~12 位的行:(直接修改文本)
  1. sed -i "/^.\{8,12\}$/!d" aa.txt
复制代码

TOP

请问怎么转回来 ...
cm535 发表于 2011-7-24 23:50
  1. sed -i "s/$//" aa.txt
复制代码

TOP

返回列表