无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5092|回复: 6
打印 上一主题 下一主题

请教,批处理怎么获取文本内指定行前面的内容?

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-6 23:34:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
比如文本内有一行( HTTP://bbs.wuyou.net),怎么把这行前面两行的一行提取出来?
也就是提取隔了 (http://bbs.wuyou.net),两行的那一行文本。
7#
发表于 2018-1-12 20:11:53 | 只看该作者
tools241 发表于 2018-1-7 21:16
利用仿Linux命令 "grep, sed, expr" 写一批处理内容如下:
grep.exe  -n  "bbs.wuyou.net" Input.txt  |  s ...

获取文本指定行前面的内容
回复

使用道具 举报

6#
 楼主| 发表于 2018-1-11 12:06:58 | 只看该作者
xing1954 发表于 2018-1-7 09:07
bat 可以操作文本,只是麻烦。
例建个文本文件
a.txt

谢谢回复,我看看。
回复

使用道具 举报

5#
 楼主| 发表于 2018-1-11 12:05:18 | 只看该作者
tools241 发表于 2018-1-7 21:16
利用仿Linux命令 "grep, sed, expr" 写一批处理内容如下:
grep.exe  -n  "bbs.wuyou.net" Input.txt  |  s ...

好的,谢谢,我研究一下。
回复

使用道具 举报

4#
发表于 2018-1-7 21:16:40 | 只看该作者
本帖最后由 tools241 于 2018-1-7 21:43 编辑

利用仿Linux命令 "grep, sed, expr" 写一批处理内容如下:
grep.exe  -n  "bbs.wuyou.net" Input.txt  |  sed.exe  -e  "s/\([0-9][0-9]*\):.*/expr.exe \1 - 2/" > output.bat
CALL  output.bat > tmp.txt
for  /f  %%f  in  (tmp.txt)  do  sed.exe -e "1,%%fd" Input.txt | sed.exe -e "2,$d" > output.txt


_____________________________________________________________

说明:
假设 "bbs.wuyou.net" 在 Input.txt 的第10行,

grep.exe  -n  "bbs.wuyou.net" Input.txt
会在搜到的行前 "加行号:" 产生
10:
bbs.wuyou.net

sed.exe  -e  "s/\([0-9][0-9]*\):.*/expr.exe \1 - 2/" > output.bat
.表示任意字, *表示前一个字出现任意次, [0-9]表示数字, 会将 \( 至  \)  内的数字存到 \1
因此 output.bat 的内容为
expr.exe 10 - 2
CALL output.bat 存到 tmp.txt 的内容为
8

for  /f  %%f  in  (tmp.txt)  do  sed.exe -e "1,%%fd" Input.txt
会将 Input.txt 的第1至8删除
sed.exe -e "2,$d" > output.txt
再将剩余的第2行至最后一行删除.

最后 output.txt 为 Input.txt 中第9行的内容.

如何利用 仿Unix/Linux命令 sed 一次替换文字中的 "某/些相似性的字串"  ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=383106

点评

好的,谢谢,我研究一下。  详情 回复 发表于 2018-1-11 12:05
回复

使用道具 举报

3#
发表于 2018-1-7 09:50:24 | 只看该作者
定义2个变量,保存前一行,还有当前行,
循环遇到当前行是 你指定的 “http”,退出循环。
回复

使用道具 举报

2#
发表于 2018-1-7 09:07:22 | 只看该作者
bat 可以操作文本,只是麻烦。
例建个文本文件
a.txt
内容
1111
2222
运行批处理

@echo off
set/p  n=要第几行:
set/a n-=1
if "%n%"=="0" (set "skip=") else (set "skip=skip=%n%")
for /f "%skip% tokens=* delims="  %%i in (a.txt) do (
set a=%%i&&goto:a)
:a
echo 内容是:%a%
pause

点评

谢谢回复,我看看。  详情 回复 发表于 2018-1-11 12:06
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 23:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表