繁体   English   中英

Windows批处理编程:从文件中仅删除完全匹配的行

[英]windows batch programming: Removing only exactly matching line from the file

我有一个像这样的文件:

exit;
exit_cool
int exit =30
exitstatus;
exit ;
 exit;
some exit;
coolexit;
this line should not be removed.
exitexit;

我要删除仅包含“退出”的行。 因此我希望该命令仅从文件中删除第一行。我目前正在使用此命令:

type somefile.txt | find /v "exit;"

但是我得到的输出是:

exit_cool
int exit =30
exitstatus;
exit ;
this line should not be removed.

如您所见,该命令删除了所有包含exit;的行exit; 我只希望删除第1行,因为它是完全匹配的。有帮助吗?

FIND无法做您想要的。 但是FINDSTR可以:-)

将FINDSTR与正则表达式结合使用^代表行的开头, $代表行的结尾:

findstr /v "^exit;$" "somefile.txt"

或使用具有完全相同含义的/x选项,但也可以将其与字符串文字一起使用,而不仅仅是正则表达式:

findstr /v /x /c:"exit;" "somefile.txt"

请注意,仅当文本文件使用以回车符/换行符终止的Windows样式行时, $ anchor和/x选项(和/e end选项)的行尾才能正常工作。 仅以换行符结尾的Unix样式行将无法正常工作。

使用findstr命令。 而不是find更好,并且也需要使用正则表达式。

type somefile | findstr /v "^exit;"

要么

findstr /v "^exit;" somefile

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM