2013-12-19 61 views
0

我想搜索文件中具有换行符\n(反斜杠后跟'n')的所有.java文件。在unix中使用find命令来搜索换行符

我使用这个命令:

find . –name "*.java" –print | xargs grep “\n” 

但结果显示.java文件具有信ñ所有行。 我想搜索一个换行\n

你能提出一个解决方案吗?

例子:

x.java 
method abc{ 
String msg="\n Action not allowed.";} 

y. java 
method getMsg(){ 
String errMsg = "\n get is not allowed.";} 

我想查找与这些类型的新行转义序列定义字符串的所有* .java文件。

+0

'\ n'是换行符; '\ r'是回车。你在做什么? –

+0

sry我错了我正在寻找新行\ n –

+0

在Unix系统上,根据定义,每个文件中的每一行都以换行符结尾。一行是由换行符终止的一系列字符。即使在二进制文件('.class'文件或目标文件)中,行被解释为直到下一个换行符的字符序列(即使总共有数百万个字符,包括零或空字节)。 –

回答

1

它看起来像你想找到包含2个字符的序列\n行。为此,请使用grep -F,该模式将模式视为固定字符串,而不是正则表达式或转义序列。

find . –name "*.java" –print | xargs grep -F "\n" 
+0

Thnx这工作 –

0

-P grep将匹配一个换行符。使用'$'。 由于我的文件中的每一行都包含一个换行符,它将匹配每一行。

grep -P '$' 1.c 

我不知道你为什么要匹配文件中的换行符。这很奇怪。

+0

许多.java文件中有很多字符串消息定义为“\ n xxx”。这些消息将在例外情况下显示。我想搜索以\ n –

+0

@sailajakasanur开头的所有字符串消息。然后,您应该给我们一个您想要匹配的行的确切示例。如果您的换行符是用“\ n”编写的,那么您可以使用grep -P“\\\ n”例如:echo“\ n xxx”| grep -o -P“\\\ n”以匹配“\ n”。对不起,我不使用tcsh,不知道它是否支持perl正则表达式。 – oyss

0

我相信你正在寻找这样的:

find . –name "*.java" –exec grep -H '"[^"]*\n' {} \; 

-H标志是表明当时有一个模式匹配的文件名。如果不为你工作:

find . –name "*.java" –print0 | xargs -0 grep '"[^"]*\n' 

如果xargs -0对你不起作用:

find . –name "*.java" –print | xargs grep '"[^"]*\n' 

如果grep不为你工作:

find . –name "*.java" –print | xargs egrep '"[^"]*\n' 

我需要这是Solaris中的最后一个版本,在现代系统中,第一个应该可以工作。

最后,不知道模式是否覆盖了所有的角落案例。