如何定义在某些文件中搜索模式的鱼壳函数?

时间:2017-10-26 09:16:24

标签: shell fish

我想创建一个具有一个必需参数和两个可选参数的函数:

files:linenumbers:linecontents

并以递归方式搜索当前目录并打印

列表
for(int i=0;i<n;i++ ){
     System.out.println(a[i]);
}

这样做的最佳方式是什么?

用于处理Fish中的函数参数和find / grep命令管道。

1 个答案:

答案 0 :(得分:1)

这是我迄今为止提出的最好的方法:

function findin --argument searchterm
    set -q argv[1]; and echo "Searching for $searchterm"; or begin;
        echo "searchterm is required."; return 1; end;
    set -q argv[2]; and set -l filenamepattern $argv[2]; or set filenamepattern ".*"
    set -q argv[3]; and set -l grepopt $argv[3]; or set grepopt '-in'

    find . -type f -print0 | grep -iz "$filenamepattern" | xargs -0 grep "$searchterm" $grepopt
    echo "just ran:\n find . -type f -print0 | grep -iz \"$filenamepattern\" | xargs -0 grep \"$searchterm\" $grepopt"
end

像这样调用:

><>findin
searchterm is required.

><>findin 'love'
anyfile.html:343:/* research -> Healing of Love */

><>findin 'love' 'only.one'
only.one:343:/* research -> Healing of Love */

><>findin 'love' 'index.html' ''
index.html:/* case sensitive  without line#s-> healing of love */