linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: rg), 且有vim插件的 2

1.

注意:rg并没有config 文件,官网上说的config文件: ~/.ripgreprc 没有任何作用,在里面写了配置项,rg并没有解析他们,一点用都没有。 官网推荐使用 alias 来添加新的配置项目,比如添加新的type或更改某些type,设置一些显示格式等。
另外,rg会将.gitignore等文件的配置考虑在内,将里面的配置项排除在搜索之外,因此需要 --no-ignore来搜索所有项。
同时,rg会忽略隐藏文件,使用 --hidden 可以连隐藏文件都一起搜索。
我自己的alias为(特意未包含 --hidden 这个选项,大部分时候我们不搜索隐藏文件):
# 必须有{}括起来,--type-add 后面的参数不能有空格
alias rg "/usr/bin/rg --type-clear make --type-add 'dts:*.{dts,dtsi}' --type-add 'web:*.{htm,html,htmls,css,js}' --type-add 'make:{*.mak,*.mk,[Gg][Nn][Uu]makefile,[Gg][Nn][Uu]makefile.am,[Gg][Nn][Uu]makefile.in,[Mm]akefile,[Mm]akefile.am,[Mm]akefile.in,[kK]build,[kK]config,*.cmake,CMakeLists.txt}' --max-columns 150 --max-columns-preview --smart-case --no-ignore"

给 ls -l 加上秒:
alias ls 'ls --time-style=+"%b %d %Y %H:%M:%S"'
如果用的是fish shell,则需要在 /usr/share/fish/functions/ls.fish 文件的最后部分 $argv 的后面加入 --time-style=+"%b %d %Y %H:%M:%S"。因为直接设置fish shell 的 alias 会没有会让ls的输出结果失去颜色。

打印查找两个文件的不同行

grep -vxf input1 input2grep -vf input1 input2
原理是将input1文件的每一行作为一个搜索模式(search pattern)(-f参数),然后不停迭代反匹配搜索(-v)另一个文件input2,就得到input1里没有但是input2有的行(即input2相对于input1的新增行)。
你想搜索input1有但是input2没有的行(input2相对于input1删掉的行),则要调换一下两个文件的顺序。
如果你要获得这两个文件的相同行,则只需要去掉-v选项,不需要调换文件顺序。
注意,如果一个文件为空,可能它被当做search pattern,导致grep没有search pattern而以为不用搜索,得出两个文件没有不同行,这时候可以交换一下两个文件的次序。如果其中一个文件为空,还需要对比吗?

posted @ 2021-12-01 10:03  微信公众号--共鸣圈  阅读(174)  评论(0编辑  收藏  举报