[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[文本处理] 批处理怎样将两个文本第一列/首列内容相同的行合并成一行?

两个文本合并,按照a文本第一列的字符串,获取b文本的字符串 并合并输出
a文本:

101   a   2
102   b   3
103   c   4


b文本:

101   56
103   58
102   59



输出c文本为:

101   a  2   56
102   b  3   59
103   c  4   58

python的pandas干这种事可方便了。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 1# hengcp


    用批处理能做的吗

TOP

回复 2# codegay


    用批处理能做的吗  麻烦您了

TOP

回复 4# hengcp


    做是可以做,但预计会很麻烦
直接上Findstr的话……效率肯定不高
建议用其他语言
老刘的小站:http://lbcpc.3vcm.net

TOP

看文件大小了 两个FOR循环 效率不会高 另外b文件首列有重复怎么处理

TOP

  1. for /f "tokens=1-3 delims= " %%i in (d:a.txt) do (
  2.     set/a n+=1
  3.     call :label "!n!" str
  4.     echo,%%i %%j %%k !str!
  5. )
  6. pause>exit
  7. :label
  8. for /f "tokens=1-2 delims= " %%i in (d:b.txt) do (
  9.     set/a a+=1
  10.     if !a! equ %~1 set "%2=%%j"&goto :eof
  11. )
复制代码

TOP

  1. @echo off
  2. for /f "tokens=1-3" %%a in (a.txt) do for /f "tokens=2" %%i in ('findstr /b %%a b.txt') do echo;%%a %%b %%c %%i
  3. pause
复制代码
1

评分人数

    • hengcp: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

回复 8# taofan712


    ok,谢谢了

TOP

taofan712 发表于 2017-4-20 16:56



    上面的代码有点小问题,如果 我现在有1011  那他也会把101的给弄出来

TOP

两个文件按照主键进行合并的问题

有两个文件:a.txt 和 b.txt
a.txt里头的文本是
192.168.1.1      张三     营运部    总经理
192.168.1.12   李四     业务部    总经理


b.txt里头的文本是

192.168.1.1     1371111111    北京
192.168.1.12   1500500000    山西


使用批处理生成c.txt的格式如下:
192.168.1.1      张三     营运部    总经理    1371111111    北京
192.168.1.12   李四     业务部    总经理     1500500000    山西

请问如何实现  谢谢

TOP

回复 11# hengcp
  1. gawk "NR==FNR{a[$1]=$2\" \"$3}NR>FNR{print $0,a[$1]}" b.txt a.txt > c.txt
复制代码
【论坛捐助】http://bbs.bathome.net/thread-10403-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

TOP

水一个
  1. setlocal enabledelayedexpansion
  2. if not exist "%~dp1b.txt" exit
  3. for /f "usebackq tokens=1,* delims= " %%i in ("%~dp0a.txt")do (
  4. set "data=%%i"&&call:1
  5. echo,%%i %%j !backup!
  6. )
  7. pause
  8. goto:eof
  9. :1
  10. set "backup="
  11. for /f "usebackq tokens=1,* delims= " %%i in ("%~dp0b.txt")do if "%data%"=="%%i" set "backup=%%j"&&goto:eof
  12. goto:eof
复制代码
这么好的论坛你上哪找
注:请遵守互联网信息安全,勿用于非法用途,伸手党直接去某度

TOP

返回列表