标题: [文本处理] 批处理如何提取每行的数字部分,没有数字就写成123456 [打印本页]
作者: vkqo 时间: 2013-4-19 14:06 标题: 批处理如何提取每行的数字部分,没有数字就写成123456
批处理如何提取每行的数字部分,没有数字就写成123456
a文本
gogo0913
great003
great521
gs021872
guijun
linlin
提取出来后的b文本应该是
0913
003
521
021872
123456
123456
弄了好几天,搞不定啊
作者: xxpinqz 时间: 2013-4-19 14:40
- @echo off
- ::逐字比对,效率很低。
- for /f "delims=" %%a in (a.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- echo %%a|findstr "[0-9]">nul&&(call :loop&echo !result!)||echo 123456
- endlocal
- )
- pause&exit /b
- :loop
- set "chr=%str:~0,1%"
- echo %chr%|findstr "[0-9]">nul&&set result=%result%%chr%
- set "str=%str:~1%"
- if "%str%"=="" goto :eof
- goto loop
复制代码
作者: BAT-VBS 时间: 2013-4-19 14:47
- gawk "{if($0~/[0-9]/)gsub(/[^0-9]/,\"\");else $0=123456;print}" a.txt > b.txt
复制代码
作者: CrLf 时间: 2013-4-19 16:27
使用第三方工具 sed 的话很容易:- sed "s/[^0-9]//g;s/^$/12345/" a.txt>b.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |