这是我的文本文件,我想删除第一行(空白):
abc!
def #
ghi./;
jklm
nopqrs
如何从文本文件中删除第一行?
我希望我的第二行成为第一行:
def #
ghi./;
jklm
nopqrs
我尝试了findstr
命令,但它无法正常工作。
答案 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