Chr*_*ith 103 windows command-line
有没有办法在Windows命令行上模拟*nix tail命令?我有一个文件,我想要一种方法来剪掉前n行文本.例如:
D:\>type file.txt
line one
line two
line three
D:\>*[call to tail]* > result.txt
D:\>type result.txt
line two
line three
Ami*_*noy 106
如果您安装了Windows PowerShell(我认为它包含在XP之后),您可以从cmd.exe运行:
主管司令部:
powershell -command "& {Get-Content *filename* -TotalCount *n*}"
尾命令:
powershell -command "& {Get-Content *filename* | Select-Object -last *n*}"
或者,直接来自PowerShell:
Get-Content *filename* -TotalCount *n*
Get-Content *filename* | Select-Object -last *n*
更新
PowerShell 3.0(Windows 8和更高版本)添加了Tail带别名的命令Last.
Head和First别名TotalCount也加入了.
因此,命令可以重写为
Get-Content *filename* -Head *n*
Get-Content *filename* -Tail *n*
Mat*_*zol 87
没有确切的等价物 但是,存在一个本机DOS命令"more",它具有+ n选项,将在第n行之后开始输出文件:
DOS提示:
C:\>more +2 myfile.txt
上面的命令将输出前两行之后的所有内容.
这实际上是Unix 头的反面:
Unix控制台:
root@server:~$ head -2 myfile.txt
上面的命令只会打印文件的前两行.
小智 24
more /e filename.txt P n
其中n =要显示的行数.工作得很快,就像head命令一样.
小智 12
这是一个彻底的黑客,但如果它是一个巨大的文件,你只想检查格式,标题等,你正在寻找一个解决方案,你总是可以将'more'输出重定向到一个新文件和CTRL-C很快.无法精确控制输出行,您很可能会在输出行的中间将其删除,但这是一种便宜的方法来获取一小部分无法使用的文件.
防爆.
C:\more test.csv > test.txt
^C C:\more test.txt
line 1
line 2
etc...... C:\
电源外壳:
Get-Content C:\logs\result.txt -Tail 10
Get-Content C:\logs\result.txt -wait (monitor the tail)
好吧,这样做,但它的速度和它看起来一样快(大致为O(n*m),其中n是要显示的行数,m是文件中的总行数):
for /l %l in (1,1,10) do @for /f "tokens=1,2* delims=:" %a in ('findstr /n /r "^" filename ^| findstr /r "^%l:"') do @echo %b
其中"10"是您要打印的行数,"filename"是文件的名称.
当使用Matt已经提到的更多+ n时,为了避免长文件中的暂停,请尝试以下方法:
更多+1 myfile.txt> con
当您从更多位置重定向输出时,它不会暂停 - 并在此处重定向到控制台.您可以类似地重定向到其他文件,如果这是您想要的最终结果,则暂停更多.使用>重定向到文件并覆盖它(如果它已经存在),或>>添加到现有文件.(可以使用任一方式重定向到con.)
Get-content -Tail n file.txt使用powershell是唯一接近taillinux的东西.
该Get-Content *filename* | Select-Object -last *n*建议上述负载/解析了整个事情.不用说,它对我的10GB日志文件不满意......该-Tail选项确实从文件末尾开始.
| 归档时间: | 
 | 
| 查看次数: | 215456 次 | 
| 最近记录: |