这是我的文本文件,我想删除第一行(包含空白):
abc!
def #
ghi./;
jklm
nopqrs
如何从文本文件中删除第一行?
我想让我的第二行成为第一行:
def #
ghi./;
jklm
nopqrs
我尝试了
findstr
命令,但它没有起作用。这是我的文本文件,我想删除第一行(包含空白):
abc!
def #
ghi./;
jklm
nopqrs
如何从文本文件中删除第一行?
我想让我的第二行成为第一行:
def #
ghi./;
jklm
nopqrs
findstr
命令,但它没有起作用。最简单的方法(假设您的文本文件名为data.txt
):
more +1 "data.txt" > "data_NEW.txt"
这将限制行长约为65535个字节/字符,文件中最多有65535行。此外,TAB键会被默认扩展为SPACE(默认为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
tail -n +2 in.txt > out.txt
来自 man 手册:
-n, --lines=[+]NUM
output the last NUM lines, instead of the last 10; or use -n
+NUM to output starting with line NUM
从提示符中,
for /f "skip=1delims=" %a in (yourtextfilename) do >>anoutputfilename echo %a
其中yourtextfilename
和anoutputfilename
必须是不同的文件名,并且如果它们包含空格或其他分隔符,则需要用引号括起来。
do @echo %a >> anooutputfilename
而不是将 echo %a
放在最后。 - jyaofor /f
的特点),并且仅包含空格的行将被替换为“ECHO is on.”(echo
的特点)。以分号开头的行也将被消除(findstr
的特点)。 - Magooecho
之前还是之后都没有关系,并且在>>
之前的空格将被复制,因此每个输出行都会以额外的空格终止。实际上,这就是使用非常规的重定向-回显结构的原因。 - Magoo@
,你的命令确实有效。我很抱歉。 - jyao如果你喜欢在CMD中使用Vim,可以使用以下命令:gvim -c "execute \"normal! #dd\"" file.txt
,其中"#"是你想删除文本文件顶部行数的数字("#"可以是"1"、"82"或其他数字)。对于这个问题,你需要gvim -c "execute \"normal! 1dd\"" file.txt
。
使用PowerShell很容易实现。如果文件不大,Get-Content
函数效果很好。
Get-Content -Path .\t.txt | Select-Object -Skip 1
powershell -NoProfile -Command "Get-Content -Path .\t.txt | Select-Object -Skip 1"
执行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") do @echo \%g