| 
 
Billunique 
中级用户
 
    菜鸟总动员
  
 
积分 259 
发帖 112 
注册 2006-8-28 
状态 离线
 | 
『楼 主』:
 [请教]两个文本内的内容按同行对应的关系拼接?
 
使用 LLM 解释/回答一下
  
现在有一个问题向各位请教: 
  有一个文件1.txt,里面的内容为:
  
1.百度 
2.新浪 
3.网易 
4.雅虎 
.... 
 
  有一个文件2.txt,里面的内容为:
  
www.baidu.com 
www.sina.com 
www.163.com 
www.yahoo.com.cn 
.... 
 
  现在想达到的结果是,在3.txt文件里,内容为:
  
1.百度 www.baidu.com 
2.新浪 www.sina.com 
3.网易 www.163.com 
4.雅虎 www.yahoo.com.cn 
.... 
 
  即让两个文件按同行对应的关系进行拼接,如何实现?多谢!
  
 
 Last edited by Billunique on 2007-10-22 at 10:19 AM ]  
 
    
 
  
  |  
                  
  
                    ★①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ【●】→←↑↓▲ |   
 | 
  2007-10-22 10:07 | 
  
 | 
 | 
 
junchen2 
高级用户
 
    
 
  
  
积分 537 
发帖 219 
注册 2007-8-4 来自 杭州--半山 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
搞错了 
 
 Last edited by junchen2 on 2007-10-22 at 11:48 AM ] 
 
    
 
  
 |   
 | 
  2007-10-22 11:41 | 
  
 | 
 | 
 
Billunique 
中级用户
 
    菜鸟总动员
  
 
积分 259 
发帖 112 
注册 2006-8-28 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
嗯?搞错什么了?~ 
 
    
 
  
  |  
                  
  
                    ★①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ【●】→←↑↓▲ |   
 | 
  2007-10-22 13:55 | 
  
 | 
 | 
 
abcd 
银牌会员
 
     
 
  
  
积分 1436 
发帖 739 
注册 2007-10-11 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off 
for /f "tokens=1* delims=." %%a in (1.txt) do ( 
   for /f "tokens=1* delims=:" %%i in ('findstr /n .* 2.txt') do ( 
      if %%i==%%a echo %%a.%%b   %%j>>3.txt 
   ) 
) 
pause
  
 
    
 
  
 |   
 | 
  2007-10-22 14:02 | 
  
 | 
 | 
 
26933062 
银牌会员
 
     
 
  
  
积分 2268 
发帖 879 
注册 2006-12-19 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
 
@echo off 
setlocal EnableDelayedExpansion 
set /p var=<2.txt 
for /f "delims=" %%a in (1.txt) do ( 
echo %%a !var! 
set /a num+=1 
call :lis 
) 
pause 
:lis 
for /f "skip=%num% delims=" %%b in (2.txt) do set var=%%b&goto :eof 
 
 Last edited by 26933062 on 2007-10-23 at 11:44 AM ]  
 
    
 
  
  |  
                  
  
                    致精致简! |   
 | 
  2007-10-22 14:35 | 
  
 | 
 | 
 
lxmxn 
版主
 
        
 
  
 
积分 11386 
发帖 4938 
注册 2006-7-23 
状态 离线
 | 
『第 6 楼』:
 试试Awk的方法
 
使用 LLM 解释/回答一下
  
gawk "NR==FNR{a=$0};NR!=FNR{print a,$0>\"3.txt\"}" 1.txt 2.txt
  
 
    
 
  
 |   
 | 
  2007-10-22 15:39 | 
  
 | 
 | 
 
junchen2 
高级用户
 
    
 
  
  
积分 537 
发帖 219 
注册 2007-8-4 来自 杭州--半山 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
echo off 
set c=0 
setlocal enabledelayedexpansion 
for /f "delims=" %%a in (1.txt) do ( 
set /a c+=1 
call :a "%%a" !c! 
) 
pause 
:a 
for /f "tokens=1,2 delims=:" %%b in ('findstr /n .* 2.txt') do ( 
@echo %%b|findstr %2 && echo %~1 %%c>>test.txt 
) 
goto :eof 
 
 
 
2-------------------------------- 
 
 
echo off 
set n=0 
setlocal enabledelayedexpansion 
for /f "delims=" %%a in (1.txt) do ( 
set /a n+=1 
set "a!n!=%%a" 
) 
set c=0 
for /f "delims=" %%b in (2.txt) do ( 
set /a c+=1 
set "b!c!=%%b" 
) 
for /l %%c in (1 1 !c!) do echo !a%%c! !b%%c! 
pause 
 
    
 
  
 |   
 | 
  2007-10-22 22:26 | 
  
 | 
 | 
 
Billunique 
中级用户
 
    菜鸟总动员
  
 
积分 259 
发帖 112 
注册 2006-8-28 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
  非常感谢大家的帮忙!待小弟有所长进的时候,一定像大家一样,去帮助需要帮助的人。 
To abcd: 
  兄的代码用我举的例子去试验,是可以成功的。但...那只是我为了说明白意图而举的一个例子,呵呵,实际上的文件可能比那复杂,我想做的是超出各种分隔符和内容,将两个文本按同行对应的关系拼接到一起。
 
To 26933062: 
  兄的代码我试了,对于1.txt的内容会遍历一遍,但每行却只能对应出2.txt的首行--若拿上面举的例子说,即类似于这样:
  
1.百度 www.baidu.com 
2.新浪 www.baidu.com 
3.网易 www.baidu.com 
4.雅虎 www.baidu.com 
 
  同进CMD会报“此时不应有!num! delims="”,我也不知道错误原因在哪,请兄分析一下。
 
To Lxmxn: 
  兄的工具我没有哈,便也无从测试,兄可否提供一下?
 
To junchen2: 
  很感谢兄的热情和两种方法,待我先去学习试验一下<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">  
 
    
 
  
  |  
                  
  
                    ★①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ【●】→←↑↓▲ |   
 | 
  2007-10-23 10:57 | 
  
 | 
 | 
 
26933062 
银牌会员
 
     
 
  
  
积分 2268 
发帖 879 
注册 2006-12-19 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
不好意识,没测试的. 
将最后的!num!改为%num%就可以了, 
以在5楼改正,并测试通过. 
注:文本内容若有空行或分号开头的行,会判断出错. 
 
    
 
  
  |  
                  
  
                    致精致简! |   
 | 
  2007-10-23 11:46 | 
  
 | 
 | 
 
Billunique 
中级用户
 
    菜鸟总动员
  
 
积分 259 
发帖 112 
注册 2006-8-28 
状态 离线
 | 
 | 
  2007-10-23 15:02 | 
  
 | 
 | 
 
bjsh 
银牌会员
 
     
 
  
  
积分 2000 
发帖 621 
注册 2007-1-1 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by lxmxn at 2007-10-22 03:39 PM: 
gawk "NR==FNR{a=$0};NR!=FNR{print a,$0>\"3.txt\"}" 1.txt 2.txt   
lxmxn兄 ;
 
paste 专干这个的吧;
 
paste 1.txt 2.txt 
好了;
 
对 dos格式的问题 无非 再转化为unix 格式; 
 
哦;对了 似乎没有 windows 下的 paste  
 
    
 
  
 |   
 | 
  2007-10-24 12:27 | 
  
 | 
 | 
 
lxmxn 
版主
 
        
 
  
 
积分 11386 
发帖 4938 
注册 2006-7-23 
状态 离线
 | 
 | 
  2007-10-24 20:05 | 
  
 | 
 | 
 
vkill 
金牌会员
 
      
 
  
  
积分 4103 
发帖 1744 
注册 2006-1-20 来自 甘肃.临泽 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by bjsh at 2007-10-24 12:27: 
 
 
lxmxn兄 ; 
 
paste 专干这个的吧; 
 
paste 1.txt 2.txt 
好了; 
 
对 dos格式的问题 无非 再转化为unix 格式;  
 
哦;对了 似乎没有 windows 下的 paste  
生成的文件多了个'tab'好象
 
C:\Downloads>type 1.txt 
1 
2 
3 
4
 
C:\Downloads>type 2.txt 
5 
6 
7 
8
 
C:\Downloads>paste 1.txt 2.txt 
        5 
        6 
        7 
        8
 
C:\Downloads>
 
 Last edited by vkill on 2007-10-24 at 08:58 PM ]  
 
    
 
  
 |   
 | 
  2007-10-24 20:47 | 
  
 | 
 | 
 
vkill 
金牌会员
 
      
 
  
  
积分 4103 
发帖 1744 
注册 2006-1-20 来自 甘肃.临泽 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
临时下载: http://www.vkill.net/temp/paste.exe
C:\Downloads>C:\Downloads\paste.exe --h 
Usage: C:\Downloads\paste.exe ... ... 
Write lines consisting of the sequentially corresponding lines from 
each FILE, separated by TABs, to standard output. 
With no FILE, or when FILE is -, read standard input.
 
Mandatory arguments to long options are mandatory for short options too. 
  -d, --delimiters=LIST   reuse characters from LIST instead of TABs 
  -s, --serial            paste one file at a time instead of in parallel 
      --help     display this help and exit 
      --version  output version information and exit
 
Report bugs to < bug-textutils@gnu.org>.
 
 Last edited by vkill on 2007-10-24 at 08:50 PM ]  
 
    
 
  
 |   
 | 
  2007-10-24 20:48 | 
  
 | 
 | 
 
lxmxn 
版主
 
        
 
  
 
积分 11386 
发帖 4938 
注册 2006-7-23 
状态 离线
 | 
『第 15 楼』:
 
 
使用 LLM 解释/回答一下
  
RE vkill: 
 
这个问题在windows下面的确是那样,在Linux下面就可以。 
 
问题在于windows/dos和linux下文本结尾的换行符不同而已。windows/dos的是0X0DX0A,而linux下面的文本的回车符是0X0A,所以导致这样的区别。 
 
    
 
  
 |   
 | 
  2007-10-24 21:54 | 
  
 |