标题: [文本处理] [分享]批处理从杂乱的文本内容中按照顺序整理姓名、电话、地址 [打印本页]
作者: Batcher 时间: 2021-11-4 15:57 标题: [分享]批处理从杂乱的文本内容中按照顺序整理姓名、电话、地址
[问题描述]
1.txt文本内容排列和格式都是不一样的,都是乱的,希望按照姓名、电话、地址的顺序整理到Excel里面。- 刘一,13111111111,广东广州白云区白云机场
-
- 黄二
- 13222222222
- 四川成都武侯祠
-
- 13333333333李三 北京市怀柔区益田影人花园酒店
-
- 张四 厦门市江头新景天湖广场一期 13444444444
复制代码
作者: Batcher 时间: 2021-11-4 15:59
[解决方案]
命令行工具 sed.exe 和下面的 test.bat 以及待处理的 1.txt 放在同一个目录下
http://bcn.bathome.net/s/tool/index.html?key=sed- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- sed -r "s/[ ,]/\n/g; s/[0-9]{11}/&\n;/" "1.txt" > "2.txt"
- >"2.csv" echo 姓名,手机号,地址
- set "n=0"
- (for /f "delims=" %%i in ('type "2.txt"') do (
- set "str=%%i"
- if "!str:~0,1!" equ "1" (
- set "Mobile=%%i"
- set /a n+=1
- ) else if "x!str:~4,1!" equ "x" (
- set "Name=%%i"
- set /a n+=1
- ) else (
- set "Address=%%i"
- set /a n+=1
- )
- if !n! equ 3 (
- echo,!Name!,!Mobile!,!Address!
- set "n=0"
- )
- ))>>"2.csv"
复制代码
请参考Q-04和Q-05把bat文件和txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: Batcher 时间: 2021-11-4 16:49
问题_2
无法处理这种情况,行首包含姓名:、电话:、地址:,详细地址里面包含空格
姓名:黄二
电话:18888888888
地址:广东省佛山市 顺德区南方医科大学
[代码 test_2.bat]- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- sed -r "s/[ ,]/\n/g; s/[0-9]{11}/&\n;/; s/姓名|电话|地址|[::]//g" "1.txt" > "2.txt"
- >"2.csv" echo 姓名,手机号,地址
- set "Output=0"
- (for /f "tokens=1* delims=:" %%h in ('type "2.txt" ^| findstr /v "^;$" ^| findstr /n .*') do (
- set "str=%%i"
- if "!str:~0,1!" equ "1" (
- set "Mobile=%%i"
- ) else if "x!str:~4,1!" equ "x" (
- set "Name=%%i"
- ) else (
- if "x!Addr1!" equ "x" (
- set "Address=%%i"
- set "Addr1=1"
- ) else (
- set "Address=!Address!%%i"
- )
- )
- if "x%%i" equ "x" (
- if !Output! equ 0 (
- echo,!Name!,!Mobile!,!Address!
- set "Addr1="
- set "Output=1"
- )
- ) else (
- set "Output=0"
- )
- ))>>"2.csv"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |