Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在每个文件中只搜索一个_Bash_Grep - Fatal编程技术网

Bash 在每个文件中只搜索一个

Bash 在每个文件中只搜索一个,bash,grep,Bash,Grep,我试图知道我需要编辑哪些文件,它们遵循的模式很容易用grep搜索(grep-rnw.-e“text”),但每次匹配都会返回几次相同的文件路径 我怎样才能避免呢 例如: ./rnaspace_cli.py:41:from rnaspace.core.id_tools import id_tools ./rnaspace_cli.py:42:from rnaspace.core.sequence import sequence ./rnaspace_cli.py:44:from rnaspace.c

我试图知道我需要编辑哪些文件,它们遵循的模式很容易用grep搜索(
grep-rnw.-e“text”
),但每次匹配都会返回几次相同的文件路径

我怎样才能避免呢

例如:

./rnaspace_cli.py:41:from rnaspace.core.id_tools import id_tools
./rnaspace_cli.py:42:from rnaspace.core.sequence import sequence
./rnaspace_cli.py:44:from rnaspace.core.trace.event import add_seq_event
./rnaspace_cli.py:45:from rnaspace.core.trace.event import disk_error_event
./rnaspace_on_web:33:from rnaspace.ui.web.controller.rnaspace_controller import rnaspace_controller
期望输出:

./rnaspace_cli.py:41:from rnaspace.core.id_tools import id_tools
./rnaspace_on_web:33:from rnaspace.ui.web.controller.rnaspace_controller import rnaspace_controller
或者更好的只是路径和文件:

./rnaspace_cli.py
./rnaspace_on_web

在grep中使用
-l
选项仅在outout中获取文件名:

grep -lrnw . -e "text"

在grep中使用
-l
选项仅在outout中获取文件名:

grep -lrnw . -e "text"

从grep手册页:

 -l, --files-with-matches
              Suppress normal output; instead print the name of each input file from which output would normally  have
              been printed.  The scanning will stop on the first match.  (-l is specified by POSIX.)
所以


将仅显示包含grep手册页中模式的文件名:

 -l, --files-with-matches
              Suppress normal output; instead print the name of each input file from which output would normally  have
              been printed.  The scanning will stop on the first match.  (-l is specified by POSIX.)
所以

将仅显示包含模式的文件名这应该可以:

grep -rnw . -e "text" | awk -F: '{print $1}' | uniq
编辑说明:

  • awk-F:'{print$1}'
    -在
    -签名处拆分输出,并仅打印第一部分
  • uniq
    -只显示一次重复的行
这应该可以:

grep -rnw . -e "text" | awk -F: '{print $1}' | uniq
编辑说明:

  • awk-F:'{print$1}'
    -在
    -签名处拆分输出,并仅打印第一部分
  • uniq
    -只显示一次重复的行

抱歉,我不太理解手册,我以为名称只是字面名称,而不是路径。@Llopis名称将与grep获得的名称完全一致。因此,
grep-l'pattern./*
-将打印
/file1
/file3
,等等。。
grep-l'pattern'/some/path/*
将打印
/some/path/file1
等等……对不起,我不太理解手册,我以为名称只是文字名称,而不是路径。@Llopis名称将与grep获得的名称完全一致。因此,
grep-l'pattern./*
-将打印
/file1
/file3
,等等。。
grep-l'pattern'/some/path/*
将打印
/some/path/file1
等等…请更好地解释你的回答亲爱的,现在好了,请更好地解释你的回答亲爱的,现在好了