[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

  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
复制代码

TOP

  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
复制代码

TOP

原帖由 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 是否能提速呢?

TOP

  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
复制代码

TOP

  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即可
1

评分人数

    • kwsensen: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

返回列表