在unix中使用find命令搜索换行符

时间:2013-12-19 06:05:46

标签: linux unix

我想在文件中搜索所有带有换行符转义序列\n(反斜杠后跟'n')的.java文件。

我正在使用此命令:

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

但结果显示.java文件中的所有行都有字母 n 。 我想搜索换行符\n

你能建议一个解决方案吗?

示例:

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

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

我想搜索具有使用换行符转义序列定义的这些类型字符串的所有* .java文件。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

grep -P '$' 1.c

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

答案 2 :(得分: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中的最后一个版本,在现代系统中,第一个应该可以工作。

最后,不确定该模式是否涵盖了所有角落案例。

相关问题