标题: [文本处理] 在文本中取每行间部分字符并保存到新文件的批处理 [打印本页]
作者: 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- 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
- @echo off&setlocal enabledelayedexpansion
- cd.>url_tmp.txt
- for /f "delims=" %%a in (1.txt) do set url=%%~na&echo !url:*www.=!>>url_tmp.txt
- start url_tmp.txt
复制代码
作者: 3887676 时间: 2009-6-7 13:11
6楼的 能把“新网站”全部去掉了 但是却不能全部去005) 006) 这些序号,因为站有很多 请各位再研究一下
作者: tab 时间: 2009-6-7 14:01
- @echo off
- for /f "tokens=2 delims=." %%i in (1.txt) do echo %%i
- 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楼要求重修改。还有其他的情况最好一起说明- @echo off&setlocal enabledelayedexpansion
- cd.>url_tmp.txt
- for /f "tokens=2 delims=) " %%a in (1.txt) do set url=%%~na&set url=!url:*.=!&echo !url:*.=!>>url_tmp.txt
- 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楼朋友提到的问题改进,加强通用性
- @echo off&setlocal enabledelayedexpansion
- cd.>url_tmp.txt
- for /f "tokens=2 delims=) " %%a in (1.txt) do (
- set url=%%~na&set url=!url:.com=!&set url=!url:.net=!
- for /f "tokens=* delims=*" %%b in (".!url!") do set str=%%~xb&echo !str:.=!>>url_tmp.txt
- )
- 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.cn,www.99sj.cn.cn就不能正常获取 麻烦再帮忙测测
作者: inittab 时间: 2009-6-9 12:37
呵,还有这么怪的域名后缀么。试试下边这个,国内域名后缀应该不会超过这个范围吧?,不够可以再加,会影响点效率.
- @echo off&setlocal enabledelayedexpansion
- cd.>url_tmp.txt
- for /f "tokens=2 delims=) " %%a in (1.txt) do (
- set url=%%~na
- for %%i in (.com .net .cn .org .cc .hk .tw .asia .me .tel .me .biz .tv .mobi) do set url=!url:%%i=!
- for /f "tokens=* delims=*" %%b in (".!url!") do set str=%%~xb&echo !str:.=!>>url_tmp.txt
- )
- 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就是你想要的。
- @echo off
- for /f "delims=. tokens=2" %%i in (test.txt) do (
- echo %%i>>list.txt
- )
-
- pause>nul
复制代码
作者: zqz0012005 时间: 2009-6-10 03:30
- @echo off
- set "domain=cn|com|org|net|edu|tw|us" 还有其他域名按此格式添加
- 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://bathome.net./) |
Powered by Discuz! 7.2 |