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

[问题求助] [已解决]文件不分行sed如何取出8-9位的数字字符串?

本帖最后由 hansom 于 2011-10-18 13:56 编辑

57047&tpl=w&username=2940253&tpl=w&navftype
57047&tpl=w&username=27949941&tpl=w&navftype
57047&tpl=w&username=2340243&tpl=w&navftype
57047&tpl=w&username=27934233&tpl=w&navftype

上面是1.txt中的代码示例,为方便看我把代码分行了,实际中的是不分行的。
如何取出usermane=后面的8-9位数字?
这样行不?
sed -n /*username=\(.*\)&tpl*/\ 1.txt
好像测试通不过。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

用for的话,文件不分行好像也不好处理。
for /f "tokens=2 delims==" %%i in (1.txt) do (echo %%i >>temp1.txt)

TOP

1.txt贴出来?

TOP

  1. 分行:
  2. sed "s/.*username=\([0-9]\+\).*/\1/" 01.txt
  3. 分行或不分行:
  4. type 01.txt|sed "y/;&/\n\n/"|sed -n "/username=/ s/.*username=\([0-9]\+\).*/\1/p"
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

  1. gawk -F"[=&;]" "{for(i=1;i<=NF;i++)if($i==\"username\"){j=i+1;print $j}}" a.txt
复制代码
1

评分人数

TOP

回复 5# awk
谢谢awk!,你的gawk把我要全部取出了
G:\vbs>gawk -F"[=&;]" "{for(i=1;i<=NF;i++)if($i==\"username\"){j=i+1;print $j}}"
temp.txt
1005203
2442689
2794991
2940253
4121341
15250977
16381849
18502445
23028594
23520785

G:\vbs>pause
请按任意键继续. . .

TOP

回复 4# hfg1977


    多谢指点·
你的不分行的代码我运行后却只取出了一个我要的。

G:\vbs>type temp.txt  | sed "y/;&/\n\n/"  | sed -n "/username=/ s/.*username=\([
0-9]\+\).*/\1/p"
23520785

G:\vbs>pause
请按任意键继续. . .

TOP

回复 4# hfg1977
  1. sed "y/;&/\n\n/" a.txt | sed -n "/username=/ s/username=//p"
复制代码

TOP

回复 7# hansom


可能是你的sed版块问题,我这里测试一切正常。

TOP

地址变动一下就出不出了:&amp;username=38784392">

TOP

回复 9# awk


    我的sed 是4.0.7的

TOP

回复 11# hansom


试试4.2.1

TOP

回复 10# hansom


需求变了,代码当然要跟着变。

TOP

呵呵,gawk -help,看得好累啊。。有点没辙了。。。

TOP

回复 13# awk
请教前辈代码应如何改下?

TOP

返回列表