[英]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.