Board logo

标题: [文本处理] [已解决]批处理怎样提取/保留文本中指定的行? [打印本页]

作者: wangl    时间: 2010-5-30 09:00     标题: [已解决]批处理怎样提取/保留文本中指定的行?

本帖最后由 pcl_test 于 2016-9-8 11:50 编辑

TXT文本中有无数行 想保留前N行 请问怎么写

例如X.TXT中内容如下:
1
2
3
4
5
.....
9999行       我想只保留前300行

谢谢了!!

[ 本帖最后由 wangl 于 2010-5-30 10:52 编辑 ]
作者: wangl    时间: 2010-5-30 09:58

没人知道么?

还是太简单没人告诉我~

小弟新手 批处理不太懂!

忘大家见谅~懂的告诉一下!!
作者: del    时间: 2010-5-30 10:15

  1. :: 保留文本中的前 N 行(覆盖原文件)
  2. @echo off
  3. :: -------- 设置 --------
  4. set File="X.TXT"
  5. set N=300
  6. :: -------- /设置 --------
  7. if not exist %File% exit
  8. if not defined N exit
  9. findstr /n .* %File% > "%temp%\tmp"
  10. (
  11.     for /f "usebackq delims=" %%a in ("%temp%\tmp") do (
  12.         set Var=%%a
  13.         set /a Line = Var
  14.         SetLocal EnableDelayedExpansion
  15.         if !Line! leq !N! echo,!Var:*:=!
  16.         EndLocal
  17.     )
  18. ) > %File%
  19. del "%temp%\tmp"
复制代码

作者: wangl    时间: 2010-5-30 10:27

谢谢~用上了~

凑字......
作者: CUer    时间: 2010-5-30 10:46

  1. head -n 300 1.txt >2.txt
复制代码

作者: CUer    时间: 2010-5-30 10:47

  1. sed "1,300!d" 1.txt >2.txt
复制代码

作者: CUer    时间: 2010-5-30 10:48

  1. gawk "NR>=1&&NR<=300" 1.txt >2.txt
复制代码

作者: caruko    时间: 2010-5-31 13:09

这是一个麻烦的方法,最后还得FOR去掉行号,不过也是一种思路吧
  1. type test.txt |findstr /n .*|findstr "^[0-9] ^[0-9][0-9]: ^[0-2][0-9][0-9]: ^300:"
复制代码





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