标题: [文本处理] 批处理怎样把a.txt不包含b.txt的行 输出c.txt? [打印本页]
作者: ximenhao 时间: 2023-2-20 18:39 标题: 批处理怎样把a.txt不包含b.txt的行 输出c.txt?
txt文档里 都是下面这种: a.txt里是几百 几千行 b.txt里是几千 几万行 txt文档编码是:ansi
https://weixin.qq.com/g/AwYAAAmHhJK5ZKkDwtToNJX4zdOb6D3KRrNfYDkkZMZiKX3r1BjZayJlWcV1mdfs
https://weixin.qq.com/g/AwYAAMmnmvr6F4tjoajqus4efE0uvaxgcHzcLjtiTM7iJVay-6tLBn2mlvGSa6L6
https://weixin.qq.com/g/AwYAAKgFPed30vmx1i6QZdtfQGTzAG0a78b1gUMriRTxvVUAPNv0M1lnGzShFAEk
https://weixin.qq.com/g/AwYAAP_quFnyC2PdADGHbc4Q6CG6xJB3a-a9Ek0a1B_GkGx3_PD9aj4jxnusN_-k
https://weixin.qq.com/g/AwYAAJab7gk_fFCX1NFWm_j-lRd2ORQ4M6MShnuVsXmBXXY5nNSZ3cnt4eE9cwuJ
https://weixin.qq.com/g/AwYAAMM8otYC-61TiuE7Z_j4OYhLqurLx7viF0pAgdvRK2A8GcRVQI-AjoqqEVa0
https://weixin.qq.com/g/AwYAACNkAJn-dvtdx81TVXk6hKml8tWbBPRWzKVa4PDzp4aq6_5tzetfrFB7Xq5n
要达到效果是:
a.txt中的行 不存在 b.txt里面,把不存在的 提取到c.txt
在论坛搜索了一些代码 运行没有用
要么直接是空文件 要么提取出来的 根本不正确 明明包含了 也给全部提取出来了。
这些是部分搜索的:(我测试 如果是txt每行随便 几行数字 是可行,但我上面的玩意不行)
1. findstr /v /i /g:2.txt 1.txt > 3.txt
2. grep -v -f 2.txt 1.txt > 3.txt
3. comm -23 1.txt 2.txt > 3.txt
4. awk 'FNR==NR{a[$0];next} !($0 in a)' 2.txt 1.txt > 3.txt
5. diff 1.txt 2.txt | grep '<' | cut -d '<' -f2 > 3.txt
本帖标题特意这样写的,方便以后有朋友 遇到这个问题 可以直接搜到。有大神看到 希望能赐教下。
作者: 77七 时间: 2023-2-20 19:02
- @echo off
- for /f "delims=" %%b in ('type "b.txt"') do (
- set _"%%b"=1
- )
- for /f "delims=" %%a in ('type "a.txt"') do (
- if not defined _"%%a" (
- >>c.txt echo,%%a
- )
- )
- pause
复制代码
这样能行吗?
作者: ximenhao 时间: 2023-2-20 19:17
回复 2# 77七
老铁 好像没问题 ,灰常感谢 。我上面表述可能有问题?我要的结果,把你这里面代码 对换 a.txt 和 b.txt的位置 就搞定了。
作者: 77七 时间: 2023-2-20 20:07
回复 3# ximenhao
可以描述为 “在b.txt中删除b.txt和a.txt的相同行,结果保存到c.txt”
作者: terse 时间: 2023-2-20 20:31
powershell 试过么- $a = [IO.File]::ReadAllLines('a.txt' ,[Text.Encoding]::Default)
- $b = [IO.File]::ReadAllLines('b.txt',[Text.Encoding]::Default)
- (diff $a $b).Where({ $_.SideIndicator -eq '=>'}).InputObject|Out-File 'c.txt' -Encoding default
复制代码
作者: 881966 时间: 2023-2-21 08:43
回复 4# 77七
也可以认为b.txt与a.txt不相同的内容保存为c.txt,不知道对不对?
作者: 881966 时间: 2023-2-21 09:02
a.txt与b.txt相同时,c.txt结果好像错误
作者: 77七 时间: 2023-2-21 18:10
回复 6# 881966不对
回复 7# 881966
请具体说说,举例说明
作者: 881966 时间: 2023-2-21 18:25
回复 8# 77七
http://www.bathome.net/thread-65222-1-1.html
含特殊字符与超大文本
作者: 77七 时间: 2023-2-21 18:47
回复 9# 881966
代码是我针对1楼文本写的。对另一个帖子,含特殊字符的,并且文本超大,考虑到效率,我写不出合适代码。
作者: 881966 时间: 2023-2-21 19:17
回复 10# 77七
谢谢你的解答
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |