标题: [文本处理] 批处理逐行合并两个文本文件时怎样处理特殊字符? [打印本页]
作者: DAIC 时间: 2011-8-19 14:22 标题: 批处理逐行合并两个文本文件时怎样处理特殊字符?
a.txt- 1
- : 2
- ~!@#$%^&*()
- {}:"<>?
复制代码
b.txt- 2
- : 1
- {}:"<>?
- ~!@#$%^&*()
复制代码
合并之后得到c.txt- 1 2
- : 2 : 1
- ~!@#$%^&*() {}:"<>?
- {}:"<>? ~!@#$%^&*()
复制代码
作者: 冷玉公子 时间: 2011-8-20 00:14
批处理没有类似Linux Shell 里的 jion 的合并命令
方法我觉得只有用For加递增变量来搞定这个问题
然后用Echo输入递增的变量
希望高手给出更好的方法
作者: CUer 时间: 2011-8-20 00:19
回复 2# 冷玉公子
能不能先把你的方法变成代码让我学习一下?
作者: DAIC 时间: 2011-9-3 23:47
求关注求代码
作者: ArdentMan 时间: 2011-9-4 09:31
本帖最后由 ArdentMan 于 2011-9-4 10:04 编辑
很麻烦的说:- @Echo Off
- For /F "tokens=1* delims=:" %%i In ('Findstr /n .* b.txt') Do Set "_%%i=%%j"
- (For /F "delims=" %%i In ('Findstr /n .* a.txt') Do (
- Set "Str=%%i"& Set /A Count+=1
- SetLocal EnableDelayedExpansion
- For %%j In (!Count!) Do Echo,!Str:*:=! !_%%j!
- EndLocal
- ))>c.txt
- Start c.txt
复制代码
作者: ArdentMan 时间: 2011-9-4 10:42
本帖最后由 ArdentMan 于 2011-9-4 10:51 编辑
- @Echo Off
- Set /A Count=-1
- :Lp
- Set /A Count+=1
- Set "Sk=skip=%Count% "
- If %Count% EQU 0 Set "Sk="
- For /F "%Sk%delims=" %%i In (a.txt) Do Set /P=%%i <Nul&Goto Next
- Pause>Nul&Exit
- :Next
- For /F "%Sk%delims=" %%i In (b.txt) Do Set /P=%%i<Nul&Echo,&Goto Lp
复制代码
作者: awk 时间: 2011-9-4 16:37
- gawk "NR==FNR{a[FNR]=$0}NR>FNR{print a[FNR],$0}" a.txt b.txt > c.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |