2013-12-19 85 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中的最後一個版本,在現代系統中,第一個應該可以工作。

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