Board logo

标题: [文本处理] 批处理如何提取文本中指定内容的行及其前几行内容 [打印本页]

作者: ads350668398    时间: 2016-12-9 22:41     标题: 批处理如何提取文本中指定内容的行及其前几行内容

本帖最后由 ads350668398 于 2016-12-12 07:24 编辑

得到文本全特定字符和前几行的字符
A.TXT
13
16
15
3
1
3
16
9
14
12
13
4
10
3
6
13
得到13的前3行:
13 9     10
    14    3
    12    6
    13   13

for /f "tokens=1* delims=" %%a in ('findstr /inx "13" a.txt') do ( 呵呵不会了
作者: ads350668398    时间: 2016-12-10 10:34

该个标题就符合规矩了么??
作者: Nsqs    时间: 2016-12-10 16:49

回复 2# ads350668398


    应该是提醒你论坛有类似帖子,自己搜
作者: ads350668398    时间: 2016-12-10 17:20

回复 3# Nsqs


    当然有 但是 我实际中不可用
作者: ads350668398    时间: 2016-12-13 00:03

本帖最后由 ads350668398 于 2016-12-13 08:42 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('findstr /inx "13" ss.txt') do (
  3.   set /a m=%%a-1&set _!m!=%%b
  4. )
  5. for /f "tokens=1* delims=:" %%a in ('findstr /in .* ss.txt') do (
  6.   if defined _%%a echo.%%b>>bss.txt&echo.!_%%a!>>bss.txt
  7. )
复制代码
怎么修改 看不明白
作者: GNU    时间: 2016-12-13 08:33

回复 4# ads350668398


    不懂就要多问问版主到底违反了哪条版规,以便日后改正。
作者: GNU    时间: 2016-12-13 08:36

  1. grep -B 3 "13" a.txt > b.txt
复制代码

作者: ads350668398    时间: 2016-12-13 08:38

本帖最后由 ads350668398 于 2016-12-13 08:47 编辑

回复 6# GNU

没有渠道沟通 晕了
    set /a m=%%a-2&set _!m!=
  set /a m=%%a-3&set _!m!=  
  set /a m=%%a-4&set _!m!=
得到第一个 13前面的几行怎么做才能【得到文本中所有 13】的前面几行啊??
作者: ads350668398    时间: 2016-12-13 08:44

回复 7# GNU


    echo
grep -B 3 "13" ss.txt > bss1.txt
输出的文件bss1没有任何东西啊?
作者: GNU    时间: 2016-12-13 13:25

回复 9# ads350668398


如果你没有 grep.exe 的话需要先下载一个
http://www.bathome.net/s/tool/index.html
作者: ads350668398    时间: 2016-12-13 16:17

本帖最后由 ads350668398 于 2016-12-13 16:19 编辑

回复 10# GNU


    gawk64.exe


F:\bat>echo
ECHO 处于打开状态。

F:\bat>grep -B 3 "13" ss.txt  1>bss1.txt
'grep' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

F:\bat>pause
请按任意键继续. . .
作者: GNU    时间: 2016-12-13 16:18

回复 11# ads350668398


    是 grep 不是 gawk
作者: ads350668398    时间: 2016-12-13 16:27

回复 12# GNU


    谢谢
grep.exe怎么个用法 链接麻烦啊发下 我怕我找的不对
作者: WHY    时间: 2016-12-13 16:50

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (a.txt) do (
  4.     if "%%i" == "13" (
  5.         if "!a!!b!!c!" NEQ "" (echo;!a!&echo;!b!&echo;!c!&echo;%%i) else echo;%%i
  6.     )
  7.     set "a=!b!"
  8.     set "b=!c!"
  9.     set "c=%%i"
  10. )
  11. pause
复制代码

作者: WHY    时间: 2016-12-13 16:51

  1. PowerShell -c "Select-String a.txt -Encoding Default -Pattern '^13$' -Context 3|%%{$_.Context.PreContext, $_.Matches[0].Value}"
复制代码

作者: GNU    时间: 2016-12-13 18:51

回复 11# ads350668398


把 grep .exe 跟 ss.txt 放到同一目录
或者把它放到 C:\Windows\System32 目录下面也行
作者: ads350668398    时间: 2016-12-14 06:48

回复 16# GNU


    恩 grep 有哪些参数 是不是百科那个啊
作者: ads350668398    时间: 2016-12-14 07:01

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd..

C:\Users>cd..

C:\>grep /?
'grep' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\>
作者: GNU    时间: 2016-12-14 09:40

回复 18# ads350668398


    再仔细阅读一遍16楼的描述:把它放到 C:\Windows\System32 目录下面也行
作者: GNU    时间: 2016-12-14 09:41

回复 17# ads350668398


    grep --help 这个命令可以查看参数和用法
作者: ads350668398    时间: 2016-12-14 10:03

晕 全adc 这个不是论坛做的么怎么没有中文的啊




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