标题: [文本处理] 批处理命令findstr如何精确匹配字符串? [打印本页]
作者: hello163mailcom 时间: 2015-1-30 01:08 标题: 批处理命令findstr如何精确匹配字符串?
原文本:text.txt
pcname1 hpux hpux2
hostname aix5.3 aix5.1
pcname2 windows windows2
pcname centos redhat
我想这样输出,比如:
pcname redhat
我是这样写的:- @echo off
- for /f "tokens=1,3" %%i in ('findstr /L "pcname" G:\text.txt') do (
- echo %%i %%j
- )
- pause
复制代码
但是输出结果是这样的:
pcname1 hpux2
pcname2 windows2
pcname redhat
作者: CrLf 时间: 2015-1-30 02:18
试试这样- findstr /rc:"^pcname " G:\text.txt
复制代码
作者: amwfjhh 时间: 2015-1-30 11:12
- findstr /r "\<pcname\>" G:\text.txt
复制代码
作者: amwfjhh 时间: 2015-1-30 11:18
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1 delims=:" %%i in ('findstr /n /r "^:样本" %~s0') do set /a "nTag=%%i"
-
- if defined nTag (
- for /f "tokens=1,3" %%i in ('more +!nTag! %~s0 ^| findstr /r "\<pcname\>"') do (
- echo,%%i %%j
- )
- ) else goto :end
-
-
- :end
- pause & goto :EOF
-
-
-
- :样本
- pcname1 hpux hpux2
- hostname aix5.3 aix5.1
- pcname2 windows windows2
- pcname centos redhat
复制代码
作者: pcl_test 时间: 2015-1-30 11:37
本帖最后由 pcl_test 于 2015-1-30 11:48 编辑
回复 1# hello163mailcom - @echo off
- for /f "tokens=1,3" %%i in ('findstr /c:"pcname" "G:\text.txt"') do (
- if "%%i" equ "pcname" echo %%i %%j&pause&exit
- )
复制代码
作者: CrLf 时间: 2015-1-30 13:07
回复 5# pcl_test
印象中 \<WORD\> 会匹配到 WORD123 噢
作者: amwfjhh 时间: 2015-1-30 13:20
可能有的不会这样识别,我的系统下,这样会仅匹配单词的,就是说数字字母同等地位,连到一起也算作一个单词,故全单词匹配时会被排除在外。
作者: CrLf 时间: 2015-1-30 13:48
本帖最后由 CrLf 于 2015-1-30 16:19 编辑
回复 7# amwfjhh
噢,想起来这个匹配的好像是 \W,那确实不怕数字,但 aix5.3 这就会误判为 aix5 或 3了
作者: hello163mailcom 时间: 2015-1-31 15:18
回复 3# amwfjhh
谢谢,测试好像可以了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |