Board logo

标题: [文本处理] 在文本中取每行间部分字符并保存到新文件的批处理 [打印本页]

作者: 3887676    时间: 2009-6-6 22:49     标题: 在文本中取每行间部分字符并保存到新文件的批处理

001) www.91xinyu.com   新网站
002) www.Abniao.com    新网站
003) www.bysj999.com   新网站
004) www.bbf.net   新网站
005) www.eslylam.cn   新网站  
006) www.gmeeting.com   新网站  
有很多网站, 想删除001) 和.com还有之后的“新网站”, 比如第一行,只想留下91xinyu   第二行只要Abniao
练手的机会,可惜俺不懂!期待高手走过。

[ 本帖最后由 3887676 于 2009-6-7 01:04 编辑 ]
作者: twfcc    时间: 2009-6-7 06:45

還是用gawk
  1. gawk -F"." "{print $2}" yourfile
复制代码

[ 本帖最后由 twfcc 于 2009-6-7 06:48 编辑 ]
作者: 3887676    时间: 2009-6-7 11:16

2楼的貌似不行呀.运行了命了文件没有改变...
作者: 3887676    时间: 2009-6-7 11:17

运行了命令文件没有改变...
作者: 3887676    时间: 2009-6-7 11:25

我改成gawk -F"." "{print $2}" 1.txt>2.txt 运行以后,  仍有部分“新网站”这个词存在     请高手再想想办法。。
作者: inittab    时间: 2009-6-7 12:43

  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>url_tmp.txt
  3. for /f "delims=" %%a in (1.txt) do set url=%%~na&echo !url:*www.=!>>url_tmp.txt
  4. start url_tmp.txt
复制代码

作者: 3887676    时间: 2009-6-7 13:11

6楼的 能把“新网站”全部去掉了    但是却不能全部去005)  006)    这些序号,因为站有很多     请各位再研究一下
作者: tab    时间: 2009-6-7 14:01

  1. @echo off
  2. for /f "tokens=2 delims=." %%i in (1.txt) do echo %%i
  3. pause
复制代码

作者: 3887676    时间: 2009-6-7 15:00

8楼的代码也不行   出现和楼一样的情况   仍有部分“新网站”这个词存在
作者: 3887676    时间: 2009-6-7 15:04

009) www.angedom.net  新网站
010) www.windv.net  新网站
011) www.ziyou.net  新网站
012) auto56.com  新网站
013) cqofice.com  新网站
014) futiachem.com  新网站
015) jxleth.com  新网站
016) laosi5.com  新网站
017) onlnb.com  新网站
018) pfslpper.com  新网站
019) bbs.wyou.com  新网站
020) *.l3.uyou.com (泛域名) 新网站
021) batome.cn  新网站
022) bbs.athome.cn  新网站
023) 0n.com.cn  新网站
024) ime.cn  新网站
025) onlnb.cn  新网站
026) angedom.net  新网站
027) winrv.net  新网站
028) bbs.wyou.net  新网站
029) zhiyu.net  新网站
030) *.becham.org (泛域名) 新网站
031) www.lt888.com  新网站
032) missormss.com  新网站
033) lts88.com  新网站
034) www.coffice.com  



这些做为例子   能清干净   任务就算完成了   要的效果

angedom
windv
ziyou
auto56
cqofice
futiachem
jxleth
laosi5
onlnb
pfslpper
wyou
uyou
batome
athome
0nime
onlnb
angedom
winrv
wyou
lt888
missormss
lts88
coffice
作者: inittab    时间: 2009-6-7 15:42

我上边根据1楼的例子给出的。按10楼要求重修改。还有其他的情况最好一起说明
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>url_tmp.txt
  3. for /f "tokens=2 delims=) " %%a in (1.txt) do set url=%%~na&set url=!url:*.=!&echo !url:*.=!>>url_tmp.txt
  4. start url_tmp.txt
复制代码

作者: tab    时间: 2009-6-7 16:08

试试这个
sed "s/\(.*\)\..*/\1/;s/\.com//g;s/.*\.//g;s/.* //g" 1.txt|more>2.txt
作者: tab    时间: 2009-6-7 16:11

11楼的代码在023) 0n.com.cn  新网站 这一行出错。
作者: 3887676    时间: 2009-6-7 16:28

11楼   完美答案   先谢谢了   我要好好学习  向你们的程度努力啊
作者: inittab    时间: 2009-6-7 16:35     标题: 回复 14楼 的帖子

等等,没有考虑全
如果是 bbb.aaa.com.cn, bbb.ccc.net.cn
楼主是取 aaa  ccc 吗?

如是,12楼的正则是正确的。
作者: inittab    时间: 2009-6-7 17:34

对13楼朋友提到的问题改进,加强通用性
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>url_tmp.txt
  3. for /f "tokens=2 delims=) " %%a in (1.txt) do (
  4. set url=%%~na&set url=!url:.com=!&set url=!url:.net=!
  5. for /f "tokens=* delims=*" %%b in (".!url!") do set str=%%~xb&echo !str:.=!>>url_tmp.txt
  6. )
  7. start url_tmp.txt
复制代码


呵,楼下的问题已改正。不知还有没有没考虑到的情况

[ 本帖最后由 inittab 于 2009-6-7 19:09 编辑 ]
作者: tab    时间: 2009-6-7 17:41

提示:16楼的代码丢失了两行。
作者: inittab    时间: 2009-6-7 19:12

呵,我真是马虎。没测试就放上来了。丢失的是两行带*号,已修正。
作者: 3887676    时间: 2009-6-8 23:20

哈哈,大家真热情,我明天再认真检查一下,再次谢谢了
作者: 3887676    时间: 2009-6-9 10:20

十六楼的遇到www.cawa.org.cnwww.99sj.cn.cn就不能正常获取   麻烦再帮忙测测
作者: inittab    时间: 2009-6-9 12:37

呵,还有这么怪的域名后缀么。试试下边这个,国内域名后缀应该不会超过这个范围吧?,不够可以再加,会影响点效率.
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>url_tmp.txt
  3. for /f "tokens=2 delims=) " %%a in (1.txt) do (
  4. set url=%%~na
  5. for %%i in (.com .net .cn .org .cc .hk .tw .asia .me .tel .me .biz .tv .mobi) do set url=!url:%%i=!
  6. for /f "tokens=* delims=*" %%b in (".!url!") do set str=%%~xb&echo !str:.=!>>url_tmp.txt
  7. )
  8. start url_tmp.txt
复制代码

[ 本帖最后由 inittab 于 2009-6-9 12:40 编辑 ]
作者: 随风    时间: 2009-6-9 13:27

说句实话,我到现在仍不知道楼主是要按什么规律提取文本内容,各位是依据什么写的代码,能给点提示吗?楼主10楼的例子更是让人摸不着头脑。
比如:023) 0n.com.cn  新网站 要求得到的结果是:0nime
到底哪些部分是应该要抛弃的?
如果只是要抛弃最后的.com 等后缀名很好办,主要是如何抛弃前面的内容不知道规律。

[ 本帖最后由 随风 于 2009-6-9 13:33 编辑 ]
作者: tab    时间: 2009-6-9 15:36

方便的话,楼主还是把文件内容贴全了吧。想见识一下都有什么样的域名。
作者: inittab    时间: 2009-6-9 19:27

我理解是楼主想提取域名中的主机名。如
www.abc.com.cn
aa.bb.cc.dd.abc.cn.cn
1234556.abc.com
bbs.abc.org.cn
*.1223.abc.com.cn
abc.cn

提取都是abc.
作者: wangshuping42    时间: 2009-6-10 01:05     标题: 试试这个,手机发帖,没测试

把文本保存成test.txt,运行代码后,生成的list.txt就是你想要的。

  1. @echo off
  2. for /f "delims=. tokens=2" %%i  in (test.txt) do (
  3. echo %%i>>list.txt
  4.    )
  5. pause>nul
复制代码

作者: zqz0012005    时间: 2009-6-10 03:30

033) lts88.com  新网站
034) www.coffice.com  
www.cawa.org.cn
www.99sj.cn.cn
www.abc.com.cn
aa.bb.cc.dd.abc.cn.cn
1234556.abc.com
bbs.abc.org.cn
*.1223.abc.com.cn
abc.cn
  1. @echo off
  2. set "domain=cn|com|org|net|edu|tw|us" 还有其他域名按此格式添加
  3. mshta "javascript:fso=new ActiveXObject('Scripting.FileSystemObject'); s=fso.OpenTextFile('a.txt').ReadAll(); fso.OpenTextFile('b.txt',2,true).Write ( s.replace(/(\w+)(?:\.(?:%domain%))+.*/g,'$1').replace(/.*[. ]/g,'') ); close();"
复制代码

作者: zljzsmzzx    时间: 2009-6-11 23:54

非常同意22楼“随风”版主。楼主要处理的域名太没有规律了,很难做到完美提取。26楼的代码我是看不懂,只是测试了一下,大部分没问题。但如果哪个心血来潮把域名搞成类似“a.com.abc.com”的形式同样提取不到位。
作者: 3887676    时间: 2009-6-12 13:18

总之谢谢大家了   21的代码够用了




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