标题: [文本处理] 批处理怎样将一个文本的前10行剪切粘贴到另一个文本里? [打印本页]
作者: kwsensen 时间: 2010-10-17 22:02 标题: 批处理怎样将一个文本的前10行剪切粘贴到另一个文本里?
本帖最后由 pcl_test 于 2016-11-29 20:27 编辑
剪切文本a.txt 里面的 前10行 到 文本 b.txt 中 (如果b.txt已经有内容,进行覆盖)
以 截取 3行 为例:
a.txt
1
2
3
4
5
b.txt
46
6
6
批处理之后的结果
a.txt
4
5
b.txt
1
2
3
刚来到这里,希望大家多指点和帮助,谢谢
[ 本帖最后由 kwsensen 于 2010-10-17 22:06 编辑 ]
作者: yangfengoo 时间: 2010-10-17 22:20
- @echo off
- type nul >b.txt
- for /f "tokens=1* delims=:" %%a in ('type a.txt^|findstr /n .* ^&del a.txt') do if %%a leq 10 (echo,%%b>>b.txt) else (echo,%%b>>a.txt)
复制代码
若要3行 改 if %%a leq 10 中10 为3即可
作者: gshccr 时间: 2010-10-17 22:51
- @echo off
- setlocal enabledelayedexpansion
- cd.>b.txt
- for /f "delims=" %%i in (a.txt) do (set /a a+=1
- if !a! leq 10 echo %%i>>b.txt)
- ren a.txt a1.txt&more +10 a1.txt>a.txt&del a1.txt
- pause
复制代码
作者: kwsensen 时间: 2010-10-17 22:52
原帖由 yangfengoo 于 2010-10-17 22:20 发表
@echo off
type nul >b.txt
for /f "tokens=1* delims=:" %%a in ('type a.txt^|findstr /n .* ^&del a.txt') do if %%a leq 10 (echo,%%b>>b.txt) else (echo,%%b>>a.txt)若要3行 改 if %%a leq 10 中10 为3即可
谢谢,测试有效。 如果a.txt文件行数很大的时候,执行速度有点慢。
针对 行数大的文件有更高效的方法吗? 搜索了一下,不知道采用 gawk 是否能提速呢?
作者: lvsehuaxue 时间: 2010-10-28 11:54
- @Echo off&setlocal enabledelayedexpansion
- cd.>b.txt
- for /f "delims=" %%i in (a.txt) do (
- set /a n+=1
- if !n! leq 10 (echo %%i>>b.txt)
- if !n!==10 (cd.>a.txt)
- if !n! gtr 10 (echo %%i>>a.txt)
- )
- pause>nul
复制代码
作者: CUer 时间: 2010-10-28 12:51
- gawk "NR<=3" 1.txt >2.txt
- gawk "NR>3" 1.txt >"%temp%\1.tmp"
- move /y "%temp%\1.tmp" 1.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |