我根据自己的喜好使用以下命令,但完美度更高; - )
grep -w -i -r -n -f all.txt . > output.txt
./index.php:86:complete paragraph1
./index.php:89:complete paragraph2
有了这个:
grep -w -i -r -o -n -f all.txt . > output.txt
我们得到:
./index.php:86:match1
./index.php:89:match2
是否也可以将其组合起来?像这样:
./index.php:86:match1:complete paragraph1
./index.php:89:match2:complete paragraph2
会很棒,甚至比段落的一部分更好,但我想用这么简单的工具要求多少一点; - )
谢谢!
答案 0 :(得分:0)
grep
没有这方面的便利,但很容易在一个简单的Awk脚本中重新实现有用的部分。
awk 'NR==FNR { p[++i] = tolower($0); next }
{ line = tolower($0); for (j=1; j<=i; ++j) if (match(line, p[j]))
{ printf "%s:%i:%s:%s\n", FILENAME, FNR, substr($0, RSTART, RLENGTH), $0;
next } }' all.txt files...
NR==FNR
条件匹配第一个输入文件。该文件中的每一行都转换为小写并读入数组p
。
第二个操作仅适用于第二个和后续文件。它遍历p
中的项目并检查当前行是否匹配。如果是,则打印匹配消息,然后跳到下一个输入行。