Board logo

标题: [文件操作] [已解决]批处理怎样删除一个文本的某一行? [打印本页]

作者: garyng    时间: 2011-9-29 19:49     标题: [已解决]批处理怎样删除一个文本的某一行?

本帖最后由 garyng 于 2011-9-29 22:25 编辑

有个文件
没有任何特殊字符但有空格数量不定

能不能
根据用户的输入
删除/去除文本的其中一行

例如:
a.txt中:
  1. aswehgt235 dkgjb asdglokih h
  2. wegtqwet2 235 edegwe24
  3. asdrghjbg 2asfg wet wregefrh
  4. etqwetkjb qwetoihqewtn qwet
  5. qwetoihwerg qwetkonwqet
  6. 2359087234 32456jmjm2346
  7. 324698713246nnnefg
  8. 2134897346
  9. sarg
  10. dasfg
复制代码
用户输入删除第
也就是:
  1. etqwetkjb qwetoihqewtn qwet
复制代码
删除第四行后
文件a.txt变成:
  1. aswehgt235 dkgjb asdglokih h
  2. wegtqwet2 235 edegwe24
  3. asdrghjbg 2asfg wet wregefrh
  4. qwetoihwerg qwetkonwqet
  5. 2359087234 32456jmjm2346
  6. 324698713246nnnefg
  7. 2134897346
  8. sarg
  9. dasfg
复制代码
就是这样~

帮帮忙~
作者: ArdentMan    时间: 2011-9-29 20:55

  1. @Echo Off
  2. Set /P Num=请输入要删除的行:
  3. (For /F "tokens=1* delims=:" %%a In ('Findstr /n .* a.txt') Do If %Num% NEQ %%a Echo %%b)>$
  4. Move $ a.txt
  5. Start a.txt
复制代码

作者: 601997526    时间: 2011-9-29 21:00

  1. @echo off
  2. set n=4
  3. (for /f "tokens=1,* delims=:" %%i in ('findstr /n ".*" a.txt') do if not %%i equ %n% echo.%%j)>b.txt
复制代码

作者: awk    时间: 2011-9-29 22:07

  1. @echo off
  2. set /p n=删除哪一行?
  3. sed -i "%n%d" a.txt
复制代码

作者: garyng    时间: 2011-9-29 22:18

回复 4# awk


   发现awk爱用sed~
作者: garyng    时间: 2011-9-29 22:25

各位的答案都不错!
作者: FOR    时间: 2011-9-29 22:41

  1. @echo off
  2. set n=4
  3. gawk "NR != %n%" a.txt
  4. pause
复制代码

作者: awk    时间: 2011-9-29 22:50

回复 5# garyng


其实更爱awk
作者: garyng    时间: 2011-9-30 10:49

回复 8# awk


   哈哈~sed哪里下啊?
   还有楼上上的gawk哪里下?
作者: FOR    时间: 2011-9-30 12:01

回复 9# garyng


    论坛的 第三方命令行 版块
  http://bbs.bathome.net/thread-3981-1-1.html




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