String 带令牌或delim的Findstr/g
假设我们有两个文件 First.txtString 带令牌或delim的Findstr/g,string,batch-file,token,delimiter,findstr,String,Batch File,Token,Delimiter,Findstr,假设我们有两个文件 First.txt 123 456 和Second.txt 789;123 123;def 482;xaq 我需要的是在第二个文件中找到只包含第一列中第一个文件的条目的行(标记1,delim;)。 这就是我需要的: Output.txt 123;def 当然, findstr /g:first.txt second.txt 将输出两行: 789;123 123;def 知道如何混合findstr和for/f以获得所需的输出吗? 谢谢大家! 是CSV的一般形式。批%A
123
456
和Second.txt
789;123
123;def
482;xaq
我需要的是在第二个文件中找到只包含第一列中第一个文件的条目的行(标记1,delim;)。
这就是我需要的:
Output.txt
123;def
当然,
findstr /g:first.txt second.txt
将输出两行:
789;123
123;def
知道如何混合findstr和for/f以获得所需的输出吗?
谢谢大家! 是CSV的一般形式。批%A中的注释变为%%A
for /f "delims=," %A in (csv.txt) do findstr /c:"%A" file2.txt
这是输出
C:\Users\User>for /f "delims=," %A in (csv.txt) do findstr /c:"%A" csv1.txt
C:\Users\User>findstr /c:"55" csv1.txt
55,61,hi there, Good
C:\Users\User>findstr /c:"60" csv1.txt
54,60,hi there, Bad
C:\Users\User>findstr /c:"Bad" csv1.txt
54,63,hi there, Bad
54,60,hi there, Bad
C:\Users\User>findstr /c:"55" csv1.txt
55,61,hi there, Good
两个文件的内容
55,60
60,60
Bad,60
55,60
及
是CSV的一般形式。批%A中的注释变为%%A
for /f "delims=," %A in (csv.txt) do findstr /c:"%A" file2.txt
这是输出
C:\Users\User>for /f "delims=," %A in (csv.txt) do findstr /c:"%A" csv1.txt
C:\Users\User>findstr /c:"55" csv1.txt
55,61,hi there, Good
C:\Users\User>findstr /c:"60" csv1.txt
54,60,hi there, Bad
C:\Users\User>findstr /c:"Bad" csv1.txt
54,63,hi there, Bad
54,60,hi there, Bad
C:\Users\User>findstr /c:"55" csv1.txt
55,61,hi there, Good
两个文件的内容
55,60
60,60
Bad,60
55,60
及
您可以利用
findstr
的超级有限的正则表达式功能,将first.txt的每一行与second.txt的每一行的开头进行比较
@echo off
for /F %%A in (first.txt) do findstr /R /C:"^%%A;" second.txt
/R
标志意味着搜索字符串应被视为正则表达式。搜索字符串中的^
表示%%A
位于行的最开头。
是一个文字分号,用于防止123
行拾取1234;suo dong zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi
@echo off
for /F %%A in (first.txt) do findstr /R /C:"^%%A;" second.txt
/R
标志意味着搜索字符串应被视为正则表达式。搜索字符串中的^
表示%%A
位于行的最开头。
是一个文字分号,用于防止123
行拾取1234;xiao zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zhi zh
@echo off
for /F %%A in (first.txt) do findstr /R /C:"^%%A;" second.txt
findstr /b /g:first.txt second.txt
但是请注意,如果first.txt
包含一行12
,则这将匹配123;abc
和129;pqr
在第二个文件中。如果第一列中的所有元素长度相同,那么简单的答案是
findstr /b /g:first.txt second.txt
但是请注意,如果first.txt
包含一行12
,则这将匹配123;abc
和129;pqr
在第二个文件中。无需对每个值执行单独的findstr
,并且为了避免行首部分匹配的问题,您可以尝试
@echo关闭
setlocal enableextensions disabledelayedexpansion
(cmd/q/c)(对于/f“delims=”(first.txt)中的%%a do echo(%%a;)
)| findstr/g://l/b second.txt
它所做的是读取first.txt
并用分隔符回显每一行。该输出由findstr
使用/g:///code>检索,以使用标准输入作为要匹配的元素的源,这些元素将被视为行(/l
)开头的文本(/b
)在second.txt
文件中,无需对每个值执行单独的findstr
,为避免行首部分匹配的问题,您可以尝试
@echo关闭
setlocal enableextensions disabledelayedexpansion
(cmd/q/c)(对于/f“delims=”(first.txt)中的%%a do echo(%%a;)
)| findstr/g://l/b second.txt
它所做的是读取first.txt
并用分隔符回显每一行。该输出由findstr
使用/g:///code>检索,以使用标准输入作为要匹配的元素的源,这些元素将被视为行(/l
)开头的文本(/b
)在second.txt
文件中,您可以更明确一些吗?我尝试了您的命令,但得到了相同的输出789;123
123;def
。谢谢!这些不是CSV文件,只是格式类似。这家伙有分号分隔的值,所以应该是delims=;
。这是一个示例,供您参考ange以适应。你能更明确一点吗?我尝试了你的命令,但我得到了相同的输出789;123
123;def
。谢谢!这些不是CSV文件,只是格式相似。这家伙有分号分隔的值,所以应该改为delims=;
。这是一个适合你的例子。非常好。我不是hink这是我第一次看到/
与/G
选项一起使用!似乎起作用了。但是,在两个文件中精确长度的工作非常好。我想这是我第一次看到/
与/G
选项一起使用!似乎起作用了。但是,在两个文件中精确长度的工作是可以编辑的s^%%A;,以满足我的需要。似乎如预期的那样有效。非常感谢您将其设置为^%%A;,以满足我的需要。似乎如预期的那样有效。非常感谢您的发现。您的解决方案似乎适用于任何长度。正是我所需要的。嗯,很好的发现。您的解决方案似乎适用于任何长度。正是我所需要的