标题: [文本处理] 【已解决】BAT脚本如何按特定行列分割文件 [打印本页]
作者: 思想之翼 时间: 2023-8-29 13:19 标题: 【已解决】BAT脚本如何按特定行列分割文件
D:\DATA1\A.txt记录数据如下
白产车才
白产车才
手及口立
手及口立
乃力个又
乃力个又
欲将A.txt 按字符分割成4列,且各列的每2行,再分割成3个文件。
输出结果为:
D:\DATA2\01\A_0001.txt记录数据为:
白
白
D:\DATA2\01\A_0002.txt记录数据为:
产
产
D:\DATA2\01\A_0003.txt记录数据为:
车
车
D:\DATA2\01\A_0004.txt记录数据为:
才
才
---------------------------------------
D:\DATA2\02\A_0001.txt记录数据为:
手
手
D:\DATA2\02\A_0002.txt记录数据为:
及
及
D:\DATA2\02\A_0003.txt记录数据为:
口
口
D:\DATA2\02\A_0004.txt记录数据为:
立
立
---------------------------------------
D:\DATA2\03\A_0001.txt记录数据为:
乃
乃
D:\DATA2\03\A_0002.txt记录数据为:
力
力
D:\DATA2\03\A_0003.txt记录数据为:
个
个
D:\DATA2\03\A_0004.txt记录数据为:
又
又
---------------------------------------
注:cut gawk 可以分步实现- cut -c 1-2 A.txt>B.txt
- gawk "NR%%2==1{close(n\".txt\");++n}{print>n\".txt\"}" "A.txt"
复制代码
作者: buyiyang 时间: 2023-8-29 14:21
- setlocal enabledelayedexpansion
- set /a h=2
- set /a c=4-1
-
- set /a line=0
- for /f "delims=" %%i in (A.txt) do (
- set /a n=line/%h%+1
- set "d=00!n!"
- md !d:~-2!
- set "p=%%i"
- for /l %%a in (0,1,%c%) do if not "!p:~%%a,1!"=="" (
- set /a t=%%a+1
- set "t=0000!t!"
- >>!d:~-2!\A_!t:~-4!.txt echo,!!p:~%%a,1!
- )
- set /a line+=1
- )
- pause
复制代码
作者: hfxiang 时间: 2023-8-29 19:06
回复 1# 思想之翼
以下是gawk方案
注意:"D:\DATA2\A.txt"需保存为ANSI编码格式,对应的文件夹(如“D:\DATA2\01\”等)需提前建立
1.命令行方式(单百分号%)- gawk -v"FS=" -v"pt=D:/DATA2/" "NR%2==1{++n;for(i=1;i<=NF;i++){close(Fn[i]);Fn[i]=sprintf(\"%s%02d/A_%04d.txt\",pt,n,i)}}{for(i=1;i<=NF;i++){print $i>Fn[i]}}" "D:\DATA2\A.txt"
复制代码
2.脚本方式(双百分号%)- gawk -v"FS=" -v"pt=D:/DATA2/" "NR%%2==1{++n;for(i=1;i<=NF;i++){close(Fn[i]);Fn[i]=sprintf(\"%%s%%02d/A_%%04d.txt\",pt,n,i)}}{for(i=1;i<=NF;i++){print $i>Fn[i]}}" "D:\DATA2\A.txt"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |