Windows平台上类似的“尾巴”命令(Windows equivalent of the '

2019-06-18 13:32发布

有没有一种方法来模拟* nix的尾巴在Windows命令行命令? 我有一个文件,我想办法剪掉文本的第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

Answer 1:

无完全等效。 但是存在一个天然的DOS命令,有一个+ n选项,将开始输出第n行后的文件“多”:

DOS提示符:

C:\>more +2 myfile.txt

第一2行后上述命令将输出的一切。
这实际上是Unix的的倒数:

UNIX控制台:

root@server:~$ head -2 myfile.txt

上述命令将只打印头两行的文件。



Answer 2:

如果您拥有的Windows PowerShell安装(我觉得既然XP它包含),你可以从刚刚运行CMD.EXE:

head命令:

powershell -command "& {Get-Content *filename* -TotalCount *n*}"

tail命令:

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与alias命令LastHeadFirst别名TotalCount也增加了。

所以,命令可以被重新写为

Get-Content *filename* -Head *n*
Get-Content *filename* -Tail *n*


Answer 3:

more /e filename.txt P n

其中n =显示的行数。 工作快速,酷似head命令。



Answer 4:

你可以得到的coreutils从的GnuWin32 ,这是标准的UNIX工具的集合,移植到Windows。

它,除其他外,包含头。



Answer 5:

这是一个总的黑客,但如果它是你想只检查格式,标题,等一个巨大的文件,你正在寻找一个解决方案,你可以永远只是“更多”输出重定向到一个新文件,CTRL-C很快。 输出行不能被精确控制,你很可能会杀死它在一个线路输出的中间,但它抓住了,否则不可用文件的一个小一点的一种廉价的方式。

防爆。

C:\more test.csv > test.txt 
^C C:\more test.txt
line 1
line 2
etc...... C:\


Answer 6:

当使用更多+ N马特已经提到的,为了避免在长文件暂停,试试这个:

更+1的myfile.txt> CON

当您重定向从更多的输出,它不会暂停 - 在这里您重定向到控制台。 您同样可以重定向至其他一些文件W / O的更多的停顿,如果这是你期望的最终结果。 使用>重定向到文件并覆盖它,如果它已经存在,或>>追加到现有的文件。 (可以使用重定向到续)



Answer 7:

那么,这将做到这一点,但它一样快,因为它看起来(大约为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”是要打印的行数,而“文件名”是该文件的名称。



Answer 8:

你也可以用Git的庆典 ,其中头部和尾部被模仿,以及



Answer 9:

Get-content -Tail n file.txt PowerShell的是,接近唯一tail在Linux操作系统。

Get-Content *filename* | Select-Object -last *n* Get-Content *filename* | Select-Object -last *n*上述载荷建议/分析整个事情。 不用说,这不是高兴我的10GB的日志文件...该-Tail选项并在文件末尾开始。



Answer 10:

电源外壳:

Get-Content C:\logs\result.txt -Tail 10

Get-Content C:\logs\result.txt -wait (monitor the tail)


Answer 11:

如果你想在头命令,一个简单的方法来得到它是安装Cygwin。 然后,你都在您的处置UNIX工具。

如果这不是一个很好的解决方案,那么你可以尝试使用FINDSTR并做结束行的指示进行搜索。

FINDSTR在MSDN: http://technet.microsoft.com/en-us/library/bb490907.aspx



Answer 12:

还有,可以从这里下载一个资源包: http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displayLang=en

它包含一个tail.exe工具,但它仅与一些Windows版本兼容

(复制这个职位: tail命令适用于Windows )



Answer 13:

FWIW,对于那些只是需要从文件的头剪掉的记录的数目不确定, 更多>效果很好。 这是有用的只是为了有一个更小的文件在开发一些初期的工作。



Answer 14:

我还没有尝试提取范围,但我可以使用下面的DOS命令来获取行:

find /N " " *.log|find "[6]" 

由于大多数文件包含空格,这个命令就会从所有日志文件和数字基本上他们每行从1开始的每个文件。 然后,将编号结果管道输送到第二FIND命令,它查找标记为编号6的线。



Answer 15:

这里是一个快速的原生头命令,让你在DOS第9行。

findstr /n "." myfile.txt | findstr "^.:"

在每一行的第一个2个字符将是行号。



Answer 16:

有一个免费的head效用此页面 ,您可以使用。 我还没有尝试过呢。



Answer 17:

set /p line= < file.csv 
echo %line%

它会回报你的文件的第一行CMD的Windows变量%线%。



Answer 18:

作为当代的答案,如果运行的是Windows 10,你可以使用“的Linux子系统的Windows”。

https://docs.microsoft.com/en-us/windows/wsl/install-win10

这将允许你从Windows中运行原生的Linux命令,从而准确地运行尾巴,你将如何在Linux。



Answer 19:

我不认为有办法开箱。 有一个在DOS和批处理文件没有这样的命令被远远地局限于模拟它(无大痛苦)。



Answer 20:

未知文本输入警告,使用批处理文件,令牌和delims能力可以是一场灾难,由于字符像和特殊的解释,!,<,等等。这样的方法应该留给唯一可预见的文字。



文章来源: Windows equivalent of the 'tail' command