如何把批处理文件里面输出的内容输出到文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把批处理文件里面输出的内容输出到文本相关的知识,希望对你有一定的参考价值。
如何把批处理文件里面输出的内容输出到文本
比如说运行s扫描的时候,它在那屏幕上有说明,我想把那个说明输出到文本,请问如何实现
伊人尤在 - 江湖少侠 七级
能加我的QQ请教下吗?QQ283812562
在dos模式下输入:
a.bat >> c:\result.txt [回车]
或你再做一个批处理b.bat
b.bat中写作:
a.bat >> c:\result.txt
运行b.bat就可把a.bat的运行结果写在c:\result.txt
=================
我测试过的,没有你说的情况发生啊
也许你的批处理文件比较特别吧! 参考技术A 你运行的命令后面加 >>test.txt
例如:
help >>c:\help.txt
这句命令就会把help显示的结果放到C盘的test.txt这个文本里。 参考技术B 用管道命令 >
批处理文件.bat > 输出文件.txt
sed命令基本使用
1、sed简介
sed是stream editor(流编辑器得缩写),用来处理Linux系统中的文件文本;
2、sed如何处理文件
sed是一行一行读取文件内容并进行处理,最后将处理结果输出到屏幕;
1、首先sed将一行一行读取文件内容,并将其保存到临时一个缓冲区(也称模式空间);
2、然后将根据需求处理临时缓冲区中的内容,完成之后输出到屏幕;
sed不加 -i 选项时默认只对缓冲区中得文本进行编辑,并不会对源文件进行修改;
3、sed基本使用操作
sed有两种语法格式分别是命令行模式和脚本模式
一、命令行模式
a)语法格式
sed [选项] ‘处理动作‘ 文件名称
常用选项
-e 进行多项多次编辑
-n 取消默认输出 #不自动打印临时缓存区内容
-r 使用扩展正则表达式
-i 对源文件进行编辑 #不要与-n一起使用
-f 指定sed脚本得文件名
常见处理动作
sed中使用动作时都需要在单引号中
‘p‘ 打印
‘i‘ 指定行之前插入内容 #相当于vim中O
‘a‘ 指定行之后插入内容 #相当于vim中o
‘c‘ 替换指定行所有内容
‘d‘ 删除指定行
示例
vim 1.txt aaaaaaaaaaa lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin 192.168.101.1
b)对文件进行增、删、改、查操作
打印内容
sed -n ‘p‘ 1.txt #打印文件每一行,并取消默认输出 sed -n ‘1p‘ 1.txt #打印第一行 sed -n ‘3,5p‘ 1.txt #打印3-5行 sed -n ‘$p‘ 1.txt #打印末尾行
增加文件内容
sed ‘$ahhhhhh‘ 1.txt #在文件末尾行下增加hhhhhh内容 sed ‘ahhhhhh‘ 1.txt #在文件每行下增加内容 sed ‘3ahhhhhh‘ 1.txt #在文件第3行下增加内容 sed ‘$ihhhhhh‘ 1.txt #在文件末尾行上一行增加内容 sed ‘3ihhhhhh‘ 1.txt #在文件第3行上一行增加内容 sed ‘/^mail/ihhhhhh‘ 1.txt #在mail开头得行上一行增加内容
修改文件内容 # c 替换整行内容
sed ‘5chhhhhh‘ 1.txt #替换文件第5行内容为hhhhhh sed ‘chhhhhh‘ 1.txt #替换文件所有内容每行为hhhhhh sed ‘1,5chhhhhh‘ 1.txt #替换1-5行所有内容 sed ‘/^mail/chhhhhh‘ 1.txt #替换以mail开头行得内容
删除文件内容
sed ‘5d‘ 1.txt #删除文件第5行内容 sed ‘1,9d‘ 1.txt #删除文件1-9行内容 sed ‘/[0-9]/d‘ 1.txt #删除文件中包含数字得内容 sed -r ‘/([0-9]{1,3}.){3}[0-9]{1,3}/d‘ 1.txt #删除文件中有IP得内容 加r支持扩展正则 sed ‘$d‘ 1.txt #删除文件末尾行
c)对文件进行检索替换操作
语法:sed ‘s/搜索得内容/替换得内容/动作‘ 处理得文件
s表示search搜索,/表示分隔符,也可以自己定义使用@或#,动作一般是打印p或全局替换g
sed -n ‘s/mail/MAIL/p‘ 1.txt #将文件中mail替换为MAIL sed -n ‘s/mail/MAIL/gp‘ 1.txt #将文件中全部mail替换为MAIL sed ‘s//sbin/nologin/test/gp‘ 1.txt #将文件中/sbin/nologin替换为test sed ‘s@/sbin/nologin@test@gp‘ 1.txt #以@为分隔符替换 sed ‘9s@/sbin/nologin@test@gp‘ 1.txt #替换文件第9行/sbin/nologin为test sed -n ‘1,5s/^/#/p‘ 1.txt #注释文件第1-5行
其他命令
r 从另外文件中读取内容
w 内容另存为
& 保存查找串以便替换串中使用 和()相同
= 打印行号
! 对所选行以外所有行应用命令,放到行数后
q 退出
sed ‘3r /etc/hosts‘ 1.txt #从/etc/hosts文件中读取内容到1.txt文件中 sed ‘1,5w 11.txt‘ 1.txt #将1.txt文件中1-5行内容保存到11.txt文件中 sed -r ‘/([0-9]{1,3}.){3}[0-9]{1,3}/w 12.txt‘ 1.txt #将1.txt文件中IP地址得行保存到12.txt文件中 sed -n ‘1,5s/^/#/p‘ 1.txt #注释1-5行 sed -n ‘s/^sync/#&/gp‘ 1.txt #注释以sync开头得行 sed -ne ‘/mail/p‘ -ne ‘/mail/=‘ 1.txt #打印含有mail得行并打印行号 e选项进行多项编辑 sed -n ‘/mail/=;/mail/p‘ 1.txt #分号也可多项编辑 sed -n ‘1,5!p‘ 1.txt #打印1-5行以外得行
sed -e ‘5ihhhhhhhh‘ -e ‘8atest‘ 1.txt -e ‘5=;8=‘ #在第五行前和第8行后插入内容,并打印5、8行号
d)结合正则使用
sed 选项 ‘sed命令或者正则表达式或者地址定位‘ 文件名
1、地址定位用于决定对哪些内容进行编辑,地址形式可以是数字、正则表达式或者二者得结合
2、如果没有地址定位,sed将对所有行进行处理
正则 | 说明 | 备注 |
/key/ | 查询包含关键字得行 | sed -n ‘/mail/p‘1.txt |
/key1/,/key2/ | 匹配包含两个关键字之间得行 | sed -n ‘/^root/,/^mail/p‘ 1.txt |
/key/,x | 匹配关键字得行到文件第x行得内容,包括关键字所在得行 | sed -n ‘/mail/,7p‘ 1.txt |
x,/key/ | x行开始到关键字匹配得行 | |
x,y | 匹配x到y行 加感叹号取反 | |
/key/! | 匹配不包含key得行 |
二、脚本模式
用法
# sed -f scripts.sed file 建议使用 ./sed.sh file 脚本第一行写 #!/bin/sed -f 1,5d s/mail/MAIL/g 3ihhhhh a666666 p
以上是关于如何把批处理文件里面输出的内容输出到文本的主要内容,如果未能解决你的问题,请参考以下文章
请问,在bat批处理中如何将执行结果中特定内容输出到指定文件中?
linux下如何将,控制台输出的所有内容,全部输出到一个文本文件