Ste*_*ano 2 linux bash command
我有一个包含一组文本文件的文件夹.
-Folder
--- file 1
--- file 2
--- file 3
--- file 4
Run Code Online (Sandbox Code Playgroud)
我有一套单词,我想检查是否在里面. {word1, username, blah blahblah}
在单个命令上是否有办法发现这些文件中的哪一个包含列表中的所有单词?
我看到它可以使用一些和grep,但我认为它们在单行上工作,而在我的情况下,恶化总是在不同的线上.
单词的数量是静态的.总是3或4所以如果需要我可以在命令中硬编码.
编辑: 他们在和.如果文件中没有全部内容,则不接受该文件!我想避免做egrep -l'word1' xargs egrep -l'word2'
有没有更好的解决方案只调用一次grep?
干杯,Ste
这对你有用吗?
grep -IRE 'word1|username|blah blahblah' /path/to/files/ |
sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P' |
awk -F: '$1!=p{if(b"" && c > 2)print b; p=$1;c=0;b=s=""}{b=b s $0;s=RS;c++}END
{if(b"" && c > 2)print b}' | awk -F: '{print $1}' | sort -u
Run Code Online (Sandbox Code Playgroud)
第一部分(grep)将列出具有匹配模式的所有文件名.第二部分(sed)将从第一个输出中删除重复项,只给出不同的行.第三部分只显示多次出现的文件,第四部分将删除匹配的模式,最后一部分只会为您提供我的朋友的文件名.
我的头疼了...
| 归档时间: |
|
| 查看次数: |
7115 次 |
| 最近记录: |