我正在使用 grep 递归搜索文件中的字符串,所有匹配的文件和包含该字符串的行都会打印在终端上。但是否也可以获得这些行的行号?
示例:目前,我得到
/var/www/file.php: $options = "this.target"
,但我正在尝试获取 /var/www/file.php: 1142 $options = "this.target";
,其中 1142
是包含该字符串的行号。
我用来递归 grep 的语法是
sudo grep -r 'pattern' '/var/www/file.php'
我们如何获得不等于模式的结果?与所有文件一样,但不包括具有特定字符串的文件。
grep -n SEARCHTERM file1 file2 ...
行号打印有
grep -n
:
grep -n pattern file.txt
要仅获取行号(没有匹配的行),可以使用
cut
:
grep -n pattern file.txt | cut -d : -f 1
包含图案的不行打印有grep -v
:
grep -v pattern file.txt
grep -n Pattern file.ext | gawk '{print $1}' FS=":"
示例:
$ grep -n 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":"
48793
52285
54023
grep -A20 -B20 pattern file.txt
搜索模式并显示模式前后 20 行
grep -nr“搜索字符串”目录
这将为您提供带有行号的行。
grep -nr "word to search for" /path/to/file/file
结果应该是这样的:
linenumber: other data "word to search for" other data
function grepn() {
grep -n $@ /dev/null | awk -F $':' '{t = $1; $1 = $2; $2 = t; print; }' OFS=$':' | sed 's/^/vim +/' | sed '/:/s// /' | sed '/:/s// : /'
}
在你的.bashrc中,然后grepn 搜索词 file1 file2 ...
结果
vim +123 file1 : xxxxxxSEARCHTERMxxxxxxxxxx
vim +234 file2 : xxxxxxSEARCHTERMxxxxxxxxxx
现在,您可以通过简单地复制在相应的行(例如第123行)上打开vim
vim +123 file1
到你的外壳。