标题: [求助]怎样提取文本中间的哪一行?
[打印本页]
作者: pusofalse
时间: 2008-4-19 19:44
标题: [求助]怎样提取文本中间的哪一行?
a.txt:
1jd
2sdfls
3sd
4kop
5df
6sd
我只想提取出3sd
该怎么做?
谢谢~
作者: bat-zw
时间: 2008-4-19 20:07
标题: 下次请把要求写清楚了:
首先建议搜索。
1按行搜索(第三行)
@echo off
for /f "delims=: tokens=1*" %%i in ('findstr /n .* a.txt') do if %%i equ 3 set str=%%j
echo %str%
pause>nul
2按字符搜索(字符为3)
@echo off
for /f "delims=" %%i in ('findstr "3" a.txt') do set str=%%i
echo %str%
pause>nul
作者: pusofalse
时间: 2008-4-19 20:11
标题: 回复2楼
那2个方法我也会,只是a.txt当中的内容是未知的,也怪我没说清楚,我想提取出a.txt中的第三行,第五行,第七行。。
作者: bat-zw
时间: 2008-4-19 20:32
标题: 这也容易:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
set /a n+=1
for %%a in (3,5,7) do if !n! equ %%a set str=%%i&echo !str!
)
pause>nul
[
Last edited by zw19750516 on 2008-4-19 at 08:42 PM ]
作者: pusofalse
时间: 2008-4-19 20:41
谢谢~~~ 一指点就明白了~~ 第一段代码,稍作修改下也可以~
@echo off&setlocal enabledelayedexpansion
for /f "delims=:" %%a in ('findstr /n .* a.txt') do set line=%%a
for /f "delims=" %%i in (a.txt) do (
set /a n+=1
for /l %%a in (3,2,%line%) do if !n! equ %%a set str=%%i&echo !str!
)
pause>nul
这样的话 不管有多少行,都会提取从3开始的奇数行了~~
作者: abcd
时间: 2008-4-19 21:54
sed -n "1,2d;$!N;P" a.txt
作者: ThinKing
时间: 2008-4-20 00:13
GNU sed
sed -n "3p;3~2p" a.txt
作者: ThinKing
时间: 2008-4-20 00:21
@echo off & SetLocal EnableDelayedExpansion
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
set /a a=%%a%%2
if %%a geq 3 if !a! equ 1 echo.%%b
)
作者: 26933062
时间: 2008-4-20 03:06
从第3行开始取奇数行。
:
@echo off&setlocal enabledelayedexpansion
set n=3
for /f "delims=" %%a in ('findstr /n .* a.txt') do (
set str=%%a&set /a m+=1
set str=!str:*:=!
if !m! equ !n! (set /a n+=2&echo.!str!)
)
pause
作者: plp626
时间: 2008-4-20 03:38
我来个一句话的:
@for /f "skip=2 delims=" %%a in (test.txt) do @if not defined plp (echo.%%a &set "plp=626") else set "plp="
作者: 26933062
时间: 2008-4-20 04:12
Quote: |
Originally posted by plp626 at 2008-4-20 03:38:
我来个一句话的:
@for /f "skip=2 delims=" %%a in (test.txt) do @if not defined plp (echo.%%a &set "plp=626") else set "plp=" |
|
巧妙!