中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: P处理里的难题 上一主题 | 下一主题
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『楼 主』:  P处理里的难题

比如说

用FOR循环语句 从1.txt提取每行 第4个字符后面所的内容并写入另一个文件
或是传递给后面的命令再分析
可是在1.txt里有!@#$%^&()等等特殊符号
如何才能区分开来?
难题????

如果你能解决了
我向版主申请加分了

因为你解决了这个问题后就意味命令行无所不能了

[ Last edited by 81291895 on 2007-11-14 at 12:24 AM ]

2007-11-13 08:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 2 楼』:  


@echo off
for /f "delims=: tokens=1*" %%a in ('findstr /n .* s.txt') do (
    if %%a equ 3 echo %%b > newfile.txt
)


2007-11-13 09:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『第 3 楼』:  

感谢楼上帮助

可能是是你误解我的意思了

如:

我是说用 FOR /F 从1.txt提取每行写到另一个文件里 (这里的每行也可能是每行第几个字符开始提取),而1.TXT里有多少行没人知道实际数量

也就是说FOR是循环语句

[ Last edited by 81291895 on 2007-11-13 at 09:47 AM ]

2007-11-13 09:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 4 楼』:  

第几个字符开始提取呢?

2007-11-13 09:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『第 5 楼』:  

用FOR循环语句 从1.txt提取每行 第4个字符后面所的内容并写入另一个文件
或是传递给后面的命令再分析

2007-11-13 09:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 6 楼』:  

用findstr正则表达式去实现吧

2007-11-13 10:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 7 楼』:  

windows下有sed?呵呵

2007-11-13 11:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『第 8 楼』:  

没人知道吗?

不要太吝啬了哈

2007-11-13 23:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 9 楼』:  

涉及特殊字符 确实是 p处理中的 相当大的一个难题;

说实话 p最不擅长的就是字符处理 反而被用来作多处理的 却是恰恰字符处理.....

还是用 sed awk perl 或 python 等 更适合它的东西 去解决;

不过你的问题 在这里还是能解决的;

代码如下
@echo off
for /f "delims=" %%a in ('findstr /n .* test.txt') do (
        set "var=%%a"
        setlocal enabledelayedexpansion
        set "var=!var:~6!"
        set var=!var:*:=!
        echo.!var!
        endlocal
)
pause
具体就不解释了 有点麻烦; 给你以下两个帖子做参考; 正是很久前也差不多是版里最后一次的讨论的成果.

[讨论]最大限度原样输出含特殊字符的指定行内容
简析环境变量和变量延迟特殊字符以及中介法的微妙关系

[ Last edited by bjsh on 2007-11-14 at 12:38 AM ]

2007-11-14 00:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『第 10 楼』:  

非常感谢“bjsh”版主的帮助
没办法加分了
一会就写个脚本,当回报了 哈哈……

2007-11-14 00:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 11 楼』:  

我来个更简洁的吧,呵呵
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=%%i
echo !line:~4!>>2.txt
)
[ Last edited by bjsh on 2007-11-14 at 10:08 AM ]

2007-11-14 09:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by genteman at 2007-11-14 09:52 AM:
我来个更简洁的吧,呵呵
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=%%i
echo !line:~4!>>2.txt
)

呵呵;你试试下面的文本 看看能不能正确显示

你就会明白当初为什么讨论那么久 才会出那么一个结果了

!!!!!!!!!!!!!!!!!!!!
!@#$%^%$#@@$%^&**())

!!!!!!&&&**^^^^$$$$$
&&||^^&&||!123456789!&"&

ps: 本来想 引用你的回复的 不小心点成了编辑选项.

[ Last edited by bjsh on 2007-11-14 at 10:23 AM ]

2007-11-14 10:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 13 楼』:  

版主你说的情况确实没考虑到,不过可以这样解决的。
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=“%%i”
echo !line:~5,-1!>>2.txt
)


2007-11-14 10:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by genteman at 2007-11-14 10:36 AM:
版主你说的情况确实没考虑到,不过可以这样解决的。
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=“%%i”
echo !line:~5,-1!>>2.txt
)

不知道 你有没有经过测试;

我测试了一下 仍然是对下面的文本

!!!!!!!!!!!!!!!!!!!!
!@#$%^%$#@@$%^&**())

!!!!!!&&&**^^^^$$$$$
&&||^^&&||!123456789!&"&

代码的问题 1:对空行的处理(这里用处不大或者说几乎没有但是有这样的一个隐患)
2:对吃!及!!之间所有内容的问题
3:对第一行你可以看一下2.txt的对应第一行内容为什么

2007-11-14 10:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
genteman
初级用户





积分 90
发帖 43
注册 2007-10-31
状态 离线
『第 15 楼』:  

嗯?怪事?
我在命令行里都测试通过了
没想到P里输出完全不一样

2007-11-14 11:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: