标题: [文本处理] 【已解决】提取多个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 行- @echo off & setlocal enabledelayedexpansion
- set /a x=5, y=15
- (for %%i in (*.txt) do (
- (for /L %%j in (1 1 !y!) do (
- set "s=" & set /p "s="
- if %%j GEQ !x! echo;!s!
- )) < "%%i"
- )) > Result.Log
- pause
复制代码
作者: WHY 时间: 2018-11-7 20:37
本帖最后由 WHY 于 2018-11-9 13:56 编辑
提取每个文本的第 5~15 行
设置 x,y 值相等时,比如 x=5, y=5 时,提取每个文本中的第 5 行- @if(0)==(0) echo off
- dir /b *.txt | cscript //nologo //e:jscript "%~f0" > 1.Log
- pause & goto :EOF
- @end
-
- var x = 5; //开始行号
- var y = 15; //结束行号
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- while(!WSH.StdIn.AtEndOfStream){
- var strFile = WSH.StdIn.ReadLine();
- var objFile = fso.OpenTextFile(strFile, 1);
- for(var i=1; i<=y; i++){
- if(objFile.AtEndOfStream) break;
- i<x ? objFile.skipLine() : WSH.Echo(objFile.ReadLine());
- }
- }
复制代码
作者: 523066680 时间: 2018-11-8 09:11
本帖最后由 523066680 于 2018-11-8 09:24 编辑
use File::Slurp;
$n = 3;
write_file( "result.log", map { (read_file($_))[$n-1] } glob "*.txt"); |
(for %a in (*.txt) do @(perl -ne "print if $.==3" "%a")) > result.log.log |
作者: 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行复制代码
还能当tail用
作者: Batcher 时间: 2018-11-8 21:40
第三行:复制代码
第二行到第四行:复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |