如何使用cmd从文本文件中删除第一行?

时间:2018-05-25 13:26:26

标签: batch-file text command-line cmd

这是我的文本文件,我想删除第一行(空白):

abc!
def  #
ghi./;
jklm
nopqrs

如何从文本文件中删除第一行?

我希望我的第二行成为第一行:

def  #
ghi./;
jklm
nopqrs

我尝试了findstr命令,但它无法正常工作。

6 个答案:

答案 0 :(得分:5)

最简单的方法(假设您的文本文件名为data.txt):

more +1 "data.txt" > "data_NEW.txt"

这会将行限制为大约65535字节/字符的长度,将文件限制为大约65535行。此外, TABs 扩展为 SPACEs (默认为8)。

您可以使用for /F循环(此处需要奇怪的未加引号的选项字符串语法,以便禁用默认的eol字符;以忽略以此类开头的行):

@echo off
(
    for /F usebackq^ skip^=1^ delims^=^ eol^= %%L in ("data.txt") do echo(%%L
) > "data_NEW.txt"

这会将行限制为大约8190个字符/字节的长度并丢失空行。

您可以将for /F循环与findstr一起使用以保留空行(findstr为每行添加行号加:,因此for /F没有看到空行;然后在循环体中移除(第一个)冒号的所有内容;切换延​​迟扩展确保不会丢失!):

@echo off
(
    for /F "skip=1 delims=" %%L in ('findstr /N "^" "data.txt"') do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:*:=!
        endlocal
    )
) > "data_NEW.txt"

这仍然将行限制为大约8190个字符/字节的长度。

或者您可以将输入重定向<set /P一起使用(为此,需要提前确定总行数):

@echo off
for /F %%C in ('find /C /V "" ^< "data.txt"') do set "COUNT=%%C"
setlocal EnableDelayedExpansion
(
    for /L %%I in (1,1,%COUNT%) do (
        set "LINE=" & set /P LINE=""
        if %%I gtr 1 echo(!LINE!
    )
) < "data.txt" > "data_NEW.txt"
endlocal

这会将行限制为大约1022个字符/字节的长度。

要用修改后的文件替换原始文件,只需执行以下操作:

move /Y "data_NEW.txt" "data.txt" > nul

答案 1 :(得分:1)

从提示符开始,

>>> x = np.asarray([[0,1,2],[1,0,2],[1,2,0]])
>>> y = np.where(x, x**2, np.pi)
>>> print(y)
[[ 3.14159265  1.          4.        ]
 [ 1.          3.14159265  4.        ]
 [ 1.          4.          3.14159265]]

for /f "skip=1delims=" %a in (yourtextfilename) do >>anoutputfilename echo %a &amp; yourtextfilename必须是不同的文件名,并且需要引用&#34;引用&#34;如果它们包含空格或其他分隔符。

答案 2 :(得分:1)

我建议从第二行开始尾到输出行

tail -n +2 in.txt > out.txt

在手册页中:

       -n, --lines=[+]NUM
          output the last NUM lines, instead of the last  10;  or  use  -n
          +NUM to output starting with line NUM

答案 3 :(得分:0)

PowerShell非常简单。如果文件不大,Get-Content效果很好。

Get-Content -Path .\t.txt | Select-Object -Skip 1

如果必须从cmd.exe shell运行,请使用:

powershell -NoProfile -Command "Get-Content -Path .\t.txt | Select-Object -Skip 1"

答案 4 :(得分:0)

如果您喜欢将Vim与CMD一起使用,则可以使用:gvim -c "execute \"normal! #dd\"" file.txt,其中“#”是要从文本文件顶部删除的行数(“#”可以为“ 1”, “ 82”或其他数字)。对于这个问题,您需要gvim -c "execute \"normal! 1dd\"" file.txt

答案 5 :(得分:0)

:执行命令WMIC,去掉第一行和最后一个空行。这个可以 : 也可以轻松修改以处理文件。我只需要一个可行的替代品 :旧的“NET VIEW”命令。

for /f "skip=1 delims=$" %f in ('"wmic /NAMESPACE:\root\directory\ldap PATH ds_computer GET ds_samaccountname "') do @for /f %g in ("%f" ) 做@echo \%g