标题: [文本处理] 批处理如何在文本中查找指定内容进行过滤? [打印本页]
作者: xslxslxsl 时间: 2022-2-27 11:19 标题: 批处理如何在文本中查找指定内容进行过滤?
现在有这么一个文本文件,1.txt,以逗号为分隔符,如:
姓名,单位,部门,联系方式
张三,部门一,甲组,A时间
王五,部门二,甲组,A时间
李四,部门一,乙组,B时间
张三,部门二,甲组,A时间
……
现在有一组数据,2.txt,如:
姓名,
张三,
李四,
……
现在打算将2.txt 中的姓名到1.txt中去筛选,形成3.txt,如:
姓名,单位,部门,联系方式
张三,部门一,甲组,A时间
李四,部门一,乙组,B时间
张三,部门二,甲组,A时间
……
谢谢大家的指点!
作者: qixiaobin0715 时间: 2022-2-28 08:39
要善用搜索,好像这类问题的解决,在论坛上有不少:- findstr /l /g:2.txt 1.txt>3.txt
复制代码
作者: hfxiang 时间: 2022-7-14 09:43
以下代码经测试有效
@rem 执行方式:filter.bat 1.txt 2.txt
@echo off
@setlocal enableDelayedExpansion
for /f "delims==" %%z in ('set exist_Name_ 2^>nul') do set "%%z="
for /f "usebackq delims=" %%z in ("%~f2") do set "exist_Name_%%z=1"
for /f "usebackq delims=" %%z in ("%~f1") do (
set "extN=%%z"
set "extN1=!extN:*,=!
call set "extN=%%extN:!extN1!=%%"
if defined exist_Name_!extN! echo;%%z
)
endlocal
作者: qixiaobin0715 时间: 2022-7-14 10:01
2楼代码有误。讨厌的findstr命令,出现中文会失效。这样处理:- findstr /r /g:2.txt 1.txt>3.txt
复制代码
作者: hfxiang 时间: 2022-7-14 10:53
回复 4# qixiaobin0715
学会了新的使用findstr的方法,之前/g:一直只能放敢1个参数(因为试过放多个时无效),原来用/r参数就能解决。感谢
作者: qixiaobin0715 时间: 2022-7-14 13:14
回复 5# hfxiang
如果“/g:”后面的文本文件每行开头的首个字符都是ASCII字符,不加/r参数也行。
是使用/l或是使用/r要具体问题具体分析。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |