标题: 批处理把每行中等于8个字符的字符串提取出来 [打印本页]
作者: curious 时间: 2009-6-6 21:16 标题: 批处理把每行中等于8个字符的字符串提取出来
假设 a.txt 文本有多行,把每行中等于8个字符的字符串提取出来,其他行过滤掉。
示例文本 a.txt- 12345678 abc cde
- 批处理之家
- 一二三四五六七八 abcdefgh
- 新手练功区欢迎大家
复制代码
作者: Batcher 时间: 2009-6-8 21:17
如果是出题帖,建议在标题中明确写清楚,以免引起不必要的误会,望楼主理解。
作者: sjzong 时间: 2009-6-11 22:42 标题: 回复 1楼 的帖子
请问一行中只有一个字符串,还是可以有多个字符串呢?例如:
12345678 abcdefgh 1254 iiuessss
这样可以吗??
作者: sjzong 时间: 2009-6-11 23:43 标题: 写个试试
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (set str=%%a&if "!str:~7,1!" neq "" if "!str:~8,1!" equ "" echo %%a)
- pause>nul
复制代码
作者: chencg 时间: 2016-4-27 16:05
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (a.txt) do (
set y=false
for %%j in (%%i) do (
set t=%%j
if "!y!" equ "false" if "!t:~7,1!" neq "" if "!t:~8,1!"=="" set y=true&echo %%j
)
)
pause
作者: chencg 时间: 2016-4-27 16:06
- @echo off
-
- setlocal enabledelayedexpansion
-
- for /f "tokens=*" %%i in (a.txt) do (
- set y=false
- for %%j in (%%i) do (
- set t=%%j
- if "!y!" equ "false" if "!t:~7,1!" neq "" if "!t:~8,1!"=="" set y=true&echo %%j
- )
-
- )
-
- pause
复制代码
作者: codegay 时间: 2016-4-27 16:56
- """
- python3
- 2016年4月27日 16:50:03 codegay
- """
-
- with open("a.txt") as f:
- [print(x) for r in f for x in r.split() if len(x)==8]
复制代码
作者: Nsqs 时间: 2016-4-27 17:27
回复 6# chencg - :On Error Resume Next
- set fso=CreateObject("scripting.filesystemobject")
- :Sub bat
- echo off&cls
- cscript -nologo -e:vbs "%0"
- pause
- Exit Sub
- :End Sub
- set RegExp=new RegExp:set stdin=wscript.stdin
- RegExp.IgnoreCase=true:RegExp.Global=-1
- file="1.txt"
- RegExp.Pattern="\b.{8}\b"
- var=fso.opentextfile(file).readall
- set matches=RegExp.Execute(var)
- for each match in matches
- wsh.echo match
- next
复制代码
作者: for_flr 时间: 2021-11-30 10:50
- $file=1.txt
- get-content $file|foreach{
- foreach ($s in $_.split()) {
- if ($s.length -eq 8) {$s}
- }
- }
复制代码
powershell
作者: 唯尘 时间: 2022-10-23 20:55
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
for %%j in (%%i) do (
set t=%%j
if "!t:~7,1!" neq "" if "!t:~8,1!"=="" echo %%j
)
)
pause
作者: 772074834 时间: 2023-5-5 14:17
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
set line=%%i
for %%j in (!line!) do (
set column=%%j
set cln8=!column:~7,1!
set cln9=!column:~8,1!
if defined cln8 (
if not defined cln9 echo %%j
)
)
)
pause
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |