Board logo

标题: [文本处理] 批处理如何修改txt文本在指定行下面添加文字? [打印本页]

作者: alpha    时间: 2010-2-4 09:16     标题: 批处理如何修改txt文本在指定行下面添加文字?

两个问题:

第一个,需求如下
           
我有一个文本文档1.txt ,我要在第7行下面添加以下内容:

  1. qewqeqwe
  2. dfgdgaweqe
  3. dsadadsada
复制代码


请问,如何实现?


第二个,需求如下

我有一个文本文档2.txt ,我要在文本中搜索“123”这样的字,然后在“123”这行下面增加如下内容:

  1. qewqeqwe
  2. dfgdgaweqe
  3. dsadadsada
复制代码


请问,如何实现?
作者: rwxyxy    时间: 2010-2-4 10:15

发帖前先搜索一下吧!
作者: batman    时间: 2010-2-4 10:26

这些问题论坛都有现成的答案的,楼主怎么就是不先搜索下。。。

问题一
  1. @echo off
  2. (for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* 1.txt') do (
  3.        echo %%b
  4.        if %%a equ 7 echo qewqeqwe&echo dfgdgaweqe&echo dsadadsada
  5. ))>1.txt
  6. start 1.txt
复制代码
问题二
  1. @echo off
  2. (for /f "delims=" %%a in (2.txt) do (
  3.        echo %%a
  4.        if "%%a" equ "123" echo qewqeqwe&echo dfgdgaweqe&echo dsadadsada
  5. ))>2.txt
  6. start 2.txt
复制代码

[ 本帖最后由 batman 于 2010-2-4 10:29 编辑 ]
作者: Batcher    时间: 2010-2-4 13:28

第一个
  1. sed -i "7a\qewqeqwe\ndfgdgaweqe\ndsadadsada" a.txt
复制代码

作者: Batcher    时间: 2010-2-4 13:29

第二个
  1. sed -i "/123/a\qewqeqwe\ndfgdgaweqe\ndsadadsada" a.txt
复制代码

作者: jianmp3    时间: 2010-5-3 03:33

@echo off
(for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* 1.txt') do (
       echo %%b
       if %%a equ 7 echo qewqeqwe&echo dfgdgaweqe&echo dsadadsada
))>1.txt
start 1.txt

我存在了一个BAT里 怎么不行?

1.TXT 里的内容
1
2
3
4
5
6
7

运行BAT后内容全清空了 什么也没有
作者: jianmp3    时间: 2010-5-3 03:35

sed -i "7a\qewqeqwe\ndfgdgaweqe\ndsadadsada" 1.txt
我存在了一个BAT里 运行后没反应

1.TXT里的内容不变
作者: Batcher    时间: 2010-5-3 09:32     标题: 回复 6楼 的帖子


))>1.txt
改成
))>result.txt
作者: Batcher    时间: 2010-5-3 09:32     标题: 回复 7楼 的帖子

你有sed.exe么?
作者: jianmp3    时间: 2010-5-3 09:45

原帖由 Batcher 于 2010-5-3 09:32 发表
你有sed.exe么?


没有 我在百度找不到SED.EXE 的下载

板主有下载链接没,下载后要放在哪
作者: hanyeguxing    时间: 2010-5-3 10:00

原帖由 jianmp3 于 2010-5-3 09:45 发表


没有 我在百度找不到SED.EXE 的下载

板主有下载链接没,下载后要放在哪
http://bbs.bathome.net/thread-1114-1-1.html
放到批处理所在目录或system32目录等
作者: jianmp3    时间: 2010-5-3 10:39

原帖由 hanyeguxing 于 2010-5-3 10:00 发表
http://bbs.bathome.net/thread-1114-1-1.html
放到批处理所在目录或system32目录等


谢谢楼上的 ,还有再问最后个问题
  1. @echo off
  2. (for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* 1.txt') do (
  3.        echo %%b
  4.        if %%a equ 7 echo qewqeqwe&echo dfgdgaweqe&echo dsadadsada
  5. ))>result.txt
复制代码
  1. sed -i "7a\qewqeqwe\ndfgdgaweqe\ndsadadsada" 1.txt
复制代码
这两个BAT添加的内容是在第7行下面,也就是第8行了

如果内容是要显示在第7行的内容后面 这两段BAT要怎么改了
作者: hanyeguxing    时间: 2010-5-3 11:07

以第一个为例:
  1. @echo off
  2. (for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* 1.txt') do if %%a==7 (echo %%b追加的字符) else echo %%b)>11.txt
复制代码

作者: jianmp3    时间: 2010-5-3 11:16

原帖由 hanyeguxing 于 2010-5-3 11:07 发表
以第一个为例:@echo off
(for /f "tokens=1,2 delims=:" %%a in ('findstr /n .* 1.txt') do if %%a==7 (echo %%b追加的字符) else echo %%b)>11.txt


谢谢了

简单明了




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