Board logo

标题: [文本处理] 批处理怎么替换1文本和2文本的第2列相同的行,替换第一列? [打印本页]

作者: zdqzdqzdq    时间: 2013-11-18 09:42     标题: 批处理怎么替换1文本和2文本的第2列相同的行,替换第一列?

111.txt内容
11.11.11.11        1024        qeq        sar        111.111.111.111:36361
24.22.22.22        1024        gd        vxzv        111.111.111.111:36363
24.12.12.12        1024        sf        xcf        111.111.111.111:36365
24.13.14.15        1024        vc        df        111.111.111.111:36367
24.119.15.14        1024        xzg        b        111.111.111.111:36369
11月6日

12.17.155.155        1024        cxgv        chen        111.111.111.111:36371
12.151.141.131        1023        bcdzx        d        111.111.111.111:36373        地方
70.111.222.110        1024        f        chen        111.111.111.111:36385
70.232.232.1        1023        bc        bc        111.111.111.111:36387
66.111.111.22        1023        gbd        5555        111.111.111.111:36389
68.222.32.32        1023        bc        vv        111.111.111.111:36391
1月6日

23.11.25.25        1024        bc        bb        111.111.111.111:36393
24.11.25.26        1024        bc        cvh        111.111.111.111:36395
67.12.12.13        1024        159        bc        111.111.111.111:36397
24.14.214.214        1024        chen        cb        111.111.111.111:36399        同样局
24.78.78.78        1024        chen        bc        111.111.111.111:36401
12.12.45.45        1011        cc        xf        111.111.111.111:36403
13.13.21.21        1011        bcv        xx        111.111.111.111:36405
99.15.15.16        1011        gsd        gsd        111.111.111.111:36407
1月2日

25.26.32.21        1023        gbd        5555        111.111.111.111:3232
15.14.122.122        1023        bc        vv        111.111.111.111:3211
15.123.159.159        9999        bc        bb        111.111.111.111:4445
12.120.130.150        1024        bc        cvh        111.111.111.111:3216
17.155.155.155        1024        159        bc        111.111.111.111:7878        个个
1月8日














                  222.txt内容
45.75.2.21        55555        12        12        12.12.12.12:36361
34.22.22.22        66666        5t        5t        12.12.12.12:36363
50.12.12.12        1024        2324        2324        12.12.12.12:36365
101.132.14.15        1024        qqq        qqq        12.12.12.12:36367
112.119.15.14        1038        111        111        12.12.12.12:36369
72.17.155.155        1024        cxgv        chen        12.12.12.12:36371
91.151.141.131        1024        qqq        qqq        12.12.12.12:36373




如果文本以为:符号 分列        就是说文本格式分为总共2列

查找在111.txt里 222.txt的
:36361
:36363
:36365 内容的行,查找到有此特征的行后把222.txt第一列与111.txt 相对的行第一列 替换
















替换后的结果111.txt
                替换后111.txt内容
45.75.2.21        55555        12        12        12.12.12.12:36361
34.22.22.22        66666        5t        5t        12.12.12.12:36363
50.12.12.12        1024        2324        2324        12.12.12.12:36365
101.132.14.15        1024        qqq        qqq        12.12.12.12:36367
112.119.15.14        1038        111        111        12.12.12.12:36369
11月6日

72.17.155.155        1024        cxgv        chen        12.12.12.12:36371
91.151.141.131        1024        qqq        qqq        12.12.12.12:36373        地方
70.111.222.110        1024        f        chen        111.111.111.111:36385
70.232.232.1        1023        bc        bc        111.111.111.111:36387
66.111.111.22        1023        gbd        5555        111.111.111.111:36389
68.222.32.32        1023        bc        vv        111.111.111.111:36391
1月6日

23.11.25.25        1024        bc        bb        111.111.111.111:36393
24.11.25.26        1024        bc        cvh        111.111.111.111:36395
67.12.12.13        1024        159        bc        111.111.111.111:36397
24.14.214.214        1024        chen        cb        111.111.111.111:36399        同样局
24.78.78.78        1024        chen        bc        111.111.111.111:36401
12.12.45.45        1011        cc        xf        111.111.111.111:36403
13.13.21.21        1011        bcv        xx        111.111.111.111:36405
99.15.15.16        1011        gsd        gsd        111.111.111.111:36407
1月2日

25.26.32.21        1023        gbd        5555        111.111.111.111:3232
15.14.122.122        1023        bc        vv        111.111.111.111:3211
15.123.159.159        9999        bc        bb        111.111.111.111:4445
12.120.130.150        1024        bc        cvh        111.111.111.111:3216
17.155.155.155        1024        159        bc        111.111.111.111:7878        个个
1月8日




这样的批处理因该怎么写,,请教各位大哥,先生指点下,,,,在此谢了,,,,,,
作者: DAIC    时间: 2013-11-18 10:14

  1. gawk -F: "NR==FNR{a[$2]=$1}NR>FNR{c2=$2; gsub(/ .*/,\"\",c2); for(i in a)if(c2==i){print a[i],$2; next}; print}" 222.txt 111.txt > 333.txt
复制代码

作者: zdqzdqzdq    时间: 2013-11-18 13:39

回复 2# DAIC



替换起  几行  怎么一些替换了  一些替换不了,,,可以解释下   这个第三方命令  详细解释吗    只替换起一部分
作者: zdqzdqzdq    时间: 2013-11-18 13:49

这个替换怎么回出现  每次被替换的都不一样,,,但是总不可以替换完全
作者: xxpinqz    时间: 2013-11-18 15:10

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-2 delims=:" %%a in (2.txt) do set "#%%~nxb=%%a"
  3. (for /f "tokens=1* delims=:" %%a in (1.txt) do (
  4.     if not "%%b"=="" (
  5.         for /f "delims= " %%i in ("%%b") do (
  6.             if defined #%%i (echo,!#%%i!:%%b) else echo,%%a:%%b
  7.         )
  8.     ) else echo,%%a
  9. ))>333.txt
  10. start 333.txt
复制代码

作者: DAIC    时间: 2013-11-18 15:24

回复 3# zdqzdqzdq


把你的111.txt、222.txt还有处理之后生成的333.txt压缩之后传上来,我试试。




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