Board logo

标题: [文本处理] 批处理怎样将一个文本的前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

  1. @echo off
  2. type nul >b.txt
  3. 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd.>b.txt
  4. for /f "delims=" %%i in (a.txt) do (set /a a+=1
  5.   if !a! leq 10 echo %%i>>b.txt)
  6. ren a.txt a1.txt&more +10 a1.txt>a.txt&del a1.txt
  7. 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

  1. @Echo off&setlocal enabledelayedexpansion
  2. cd.>b.txt
  3. for /f "delims=" %%i in (a.txt) do (
  4.     set /a n+=1
  5.     if !n! leq 10 (echo %%i>>b.txt)
  6.     if !n!==10 (cd.>a.txt)
  7.     if !n! gtr 10 (echo %%i>>a.txt)
  8. )
  9. pause>nul
复制代码

作者: CUer    时间: 2010-10-28 12:51

  1. gawk "NR<=3" 1.txt >2.txt
  2. gawk "NR>3" 1.txt >"%temp%\1.tmp"
  3. move /y "%temp%\1.tmp" 1.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2