Grep 为什么';格雷普能给我一条匹配的线吗?

Grep 为什么';格雷普能给我一条匹配的线吗?,grep,Grep,我刚刚注意到 grep -rni 'a2}' * 不为所有具有字符串a2}的文档提供匹配行。为什么会这样 我试图创建一个最小的示例,但是当我创建一个新文件并粘贴内容时,它失败了。所以我把文件上传到了一个网站上。也许这是一个编码问题 该文件的内容是: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{KV-Diagramme} \label{chap:a2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

我刚刚注意到

grep -rni 'a2}' *
不为所有具有字符串
a2}
的文档提供匹配行。为什么会这样

我试图创建一个最小的示例,但是当我创建一个新文件并粘贴内容时,它失败了。所以我把文件上传到了一个网站上。也许这是一个编码问题

该文件的内容是:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{KV-Diagramme}
\label{chap:a2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \PsTexAbbildungOhneCaption{figures/a2-1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "skript"
%%% End:
grep-rni'a2}'*
的结果是

moose@pc08 ~/Downloads/algorithms/grep $ grep -rni "a2}" *
%%% End:master: "skript"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
但我预料

moose@pc08 ~/Downloads/algorithms/grep $ grep -rni "a2}" *
\label{chap:a2}

为什么会得到这个结果?

该文件具有CR行终止符,因此看起来是一个单行文件:

#> file anhang-2.tex
anhang-2.tex: LaTeX document, ASCII text, with CR line terminators
将其转换为Linux格式:

#>  mac2unix anhang-2.tex
mac2unix: converting file anhang-2.tex to Unix format ...
#>  grep -rni 'a2}' anhang-2.tex 
3:\label{chap:a2}

这是因为您的文件使用Mac OS 9行结尾。您需要首先转换为UNIX行结尾。如何执行此操作取决于您的场景,但您可以使用以下内容执行一个文件:

tr '\r' '\n' < anhang-2.tex > anhang-2.txt
tr'\r'\n'anhang-2.txt

然后,您将能够对新文件进行grep处理。

我得到以下输出:
tmp.txt:3:\label{chap:a2}
这很奇怪:我得到了您期望的结果。我也是。。。与预期的结果相同如果文件夹中的所有
.tex
文件都有CR行终止符,我如何检查它们?请尝试此@moose,
file*tex | grep CR
@perreal您对行终止的看法是正确的。我只是做了个简单的假设。编辑答案。谢谢