Board logo

标题: [文本处理] 【已解决】提取多个txt文本文件的第n行/指定行,合并到同一个新的文件里? [打印本页]

作者: lxh623    时间: 2018-11-7 09:19     标题: 【已解决】提取多个txt文本文件的第n行/指定行,合并到同一个新的文件里?

本帖最后由 lxh623 于 2018-11-10 09:03 编辑

批处理怎样提取第n行,合并到一起?
当前目录下的文本文件,提取每一个txt的第n行,合并到result.txt 。
第二个,提取连续的几行,比如从第x行到第y行,合并到result.txt 。
谢谢!!
作者: 523066680    时间: 2018-11-7 09:35

本帖最后由 523066680 于 2018-11-7 09:50 编辑

Join( Get-All-Text-Map-Each-Of-Line-{n}, "\n" )-Save("result.txt")

来自超级强大的变形 PowerShell 语法。
PowerShell 是坠吼的

作者: xczxczxcz    时间: 2018-11-7 11:12

(gci ".\*.txt" )| %{(gc "$_" -totalcount n)[-1] | ac ".\result1.log"}

第二种
(gci ".\*.txt" )| %{(gc "$_" -totalcount y)[x..y] | ac ".\result2.log"}
作者: zuodx    时间: 2018-11-7 11:51

#perl 代码
use strict;

my  $start = shift;
my        $end   = shift;

for(glob('*.txt')){
        my $fh ;
        open ($fh , $_) or die "Open $_ failed\n";
        my @arr = <$fh>;       
        print for(@arr[$start -1 .. $end -1]);
        close($fh);
}
#结束. 把以上代码拷贝到个文件,p.pl      
#p.pl  1  8  表示取目录下所有txt文件的1---8行
#p.pl   1  8 >result.txt   把结果重定向到result.txt
作者: 523066680    时间: 2018-11-7 12:36

回复 4# zuodx

    File::Slurp 很好用,可以让代码更简洁
作者: yhcfsr    时间: 2018-11-7 13:44

回复 2# 523066680


    这个命令要怎么用,WPS无法识别为CMDLET
作者: 523066680    时间: 2018-11-7 14:26

回复 6# yhcfsr


    滑稽脸表示开玩笑
作者: WHY    时间: 2018-11-7 20:32

本帖最后由 WHY 于 2018-11-8 09:28 编辑

提取每个文本的第 5~15 行
设置 x,y 值相等时,比如 x=y=5 时,提取每个文本中的第 5 行
  1. @echo off & setlocal enabledelayedexpansion
  2. set /a x=5, y=15
  3. (for %%i in (*.txt) do (
  4.     (for /L %%j in (1 1 !y!) do (
  5.         set "s=" & set /p "s="
  6.         if %%j GEQ !x! echo;!s!
  7.     )) < "%%i"
  8. )) > Result.Log
  9. pause
复制代码

作者: WHY    时间: 2018-11-7 20:37

本帖最后由 WHY 于 2018-11-9 13:56 编辑

提取每个文本的第 5~15 行
设置 x,y 值相等时,比如 x=5, y=5 时,提取每个文本中的第 5 行
  1. @if(0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0" > 1.Log
  3. pause & goto :EOF
  4. @end
  5. var x = 5;      //开始行号
  6. var y = 15;     //结束行号
  7. var fso = new ActiveXObject('Scripting.FileSystemObject');
  8. while(!WSH.StdIn.AtEndOfStream){
  9.     var strFile = WSH.StdIn.ReadLine();
  10.     var objFile = fso.OpenTextFile(strFile, 1);
  11.     for(var i=1; i<=y; i++){
  12.         if(objFile.AtEndOfStream) break;
  13.         i<x ? objFile.skipLine() : WSH.Echo(objFile.ReadLine());
  14.     }
  15. }
复制代码

作者: 523066680    时间: 2018-11-8 09:11

本帖最后由 523066680 于 2018-11-8 09:24 编辑






作者: 523066680    时间: 2018-11-8 09:30

本帖最后由 523066680 于 2018-11-8 09:54 编辑

在必应搜索了一下`linux shell get nth line of text`

Getting n-th line of text output

这……

作者: happy886rr    时间: 2018-11-8 21:28

本帖最后由 happy886rr 于 2018-11-8 21:32 编辑

tl你值得拥有,下载地址http://bcn.bathome.net/tool/tl.exe
提取第n行到第m行
  1. tl *.txt -nn,m
复制代码
还能当tail用
作者: Batcher    时间: 2018-11-8 21:40

第三行:
  1. sed -s -n "3p" *.txt
复制代码
第二行到第四行:
  1. sed -s -n "2,4p" *.txt
复制代码





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