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

[文本处理] [已解决]批处理怎样提取每行第几个字符左边或右边的内容并输出?

本帖最后由 pcl_test 于 2017-3-28 10:06 编辑

要求2种效果的代码:即例如每行第三个“,”字符或“男性”这个字符左边的内容,第二种效果是提取字符的右边的内容,并输出到另外一个文本里。
1

评分人数

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

给你个VBS简单的思路  判断第3个字符是否是“,” 不是就从第6个字符开始截取

TOP

具体问题要具体分析,楼主可不可以给出示例文本?
***共同提高***

TOP

可能是我没有表达清楚,我的意思是说:批处理提取txt文本内容的每行含有例如“,”或“男性”这个字符左边的内容,第二种效果是提取每行含有特定的字符的第几个这个字符的右边的内容,并输出到另外一个文本里。
每行含有这个特定的字符不只是一个,所以要求是这个字符的第几个开始提取该字符的左边或右边的内容,
要2个批处理:一个是提取字符左边的内容,另外一个是提取字符右边的内容

例如文本内容:
2.32.43434,555,1v飞
不方便.23323是不是,嗯23,4343asuf.nn65
提取结果:

例如提取每行含有第1个,字符左边的内容为:
2.32.43434
不方便.23323是不是

例如提取每行含有第2个,字符右边的内容为:
1v飞
4343asuf.nn65

要2个批处理,分别是提取字符左边内容的和右边内容的代码

TOP

本帖最后由 batman 于 2011-4-25 16:06 编辑
  1. @echo off
  2. for /f "tokens=1,2* delims=," %%a in (a.txt) do (
  3.      echo 要提取的左边内容:%%a
  4.      echo 要提取的右边内容:%%c
  5. )
  6. pause>nul
复制代码
***共同提高***

TOP

4# wh1234567


请把问题描述更新到顶楼
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

5# batman


不错,能不能解释一下代码,以便参考修改,另外要求输出到另外文本里。

TOP

  1. sed "s/,.*//" a.txt | more >left.txt
复制代码
  1. sed "s/[^,]*,//" a.txt | more >right.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

8# Batcher
没有反应,是不是代码不全?

TOP

9# wh1234567


是不是你没有sed?
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

就是把“,”做分隔符。
但他讲到的第二种可能就无法用分隔符的方法做了“男性”是两个字要怎么办?
是不是把“男”做分隔符,但如果后面跟的不是“性”字就麻烦了!
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

本帖最后由 zm900612 于 2011-4-25 23:02 编辑

以字符串为分割符也没那么难,有两个方案,一个是替换字符串为单个字符进行截取,另一个方案是变量替换进行正反选,尚未见过先例。早就想用了,只是没碰上合适的环境
只提取第一个作为分割符的字符串的内容:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (a.txt) do (
  3. set str=%%a
  4. for /f "delims=" %%b in ("!str:*男性=男性!") do echo 左边的内容:!str:%%~b=!
  5. echo 右边的内容:!str:*男性=!
  6. )
  7. pause
复制代码
1

评分人数

TOP

但是用变量替换进行正反选的方法有个缺陷是分隔符后的文本中不能含有*或者=,否则会出错

TOP

12#给的代码中
第5行代码的男性前缺了个*吧?

TOP

本帖最后由 zm900612 于 2011-4-25 23:04 编辑

笔误,多写指出,已修正。

TOP

返回列表