Board logo

标题: [文本处理] 批处理逐行合并两个文本文件时怎样处理特殊字符? [打印本页]

作者: DAIC    时间: 2011-8-19 14:22     标题: 批处理逐行合并两个文本文件时怎样处理特殊字符?

a.txt
  1. 1
  2. : 2
  3. ~!@#$%^&*()
  4. {}:"<>?
复制代码
b.txt
  1. 2
  2. : 1
  3. {}:"<>?
  4. ~!@#$%^&*()
复制代码
合并之后得到c.txt
  1. 1 2
  2. : 2 : 1
  3. ~!@#$%^&*() {}:"<>?
  4. {}:"<>? ~!@#$%^&*()
复制代码

作者: 冷玉公子    时间: 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 编辑

很麻烦的说:
  1. @Echo Off
  2. For /F "tokens=1* delims=:" %%i In ('Findstr /n .* b.txt') Do Set "_%%i=%%j"
  3. (For /F "delims=" %%i In ('Findstr /n .* a.txt') Do (
  4.   Set "Str=%%i"& Set /A Count+=1
  5.   SetLocal EnableDelayedExpansion
  6.   For %%j In (!Count!) Do Echo,!Str:*:=! !_%%j!
  7.   EndLocal
  8. ))>c.txt
  9. Start c.txt
复制代码

作者: ArdentMan    时间: 2011-9-4 10:42

本帖最后由 ArdentMan 于 2011-9-4 10:51 编辑
  1. @Echo Off
  2. Set /A Count=-1
  3. :Lp
  4. Set /A Count+=1
  5. Set "Sk=skip=%Count% "
  6. If %Count% EQU 0 Set "Sk="
  7. For /F "%Sk%delims=" %%i In (a.txt) Do Set /P=%%i <Nul&Goto Next
  8. Pause>Nul&Exit
  9. :Next
  10. For /F "%Sk%delims=" %%i In (b.txt) Do Set /P=%%i<Nul&Echo,&Goto Lp
复制代码

作者: awk    时间: 2011-9-4 16:37

  1. gawk "NR==FNR{a[FNR]=$0}NR>FNR{print a[FNR],$0}" a.txt b.txt > c.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2