0
尝试使用来自一个文件的模式grep并在大的文件上使用它们,然后将结果保存到内部具有模式名称和grep输出的文件不起作用,创建空文件。grep模式并保存到具有模式名称的文件
我做错了什么?
while read p; do
grep $p big.txt >>$p
done < patterns.txt
尝试使用来自一个文件的模式grep并在大的文件上使用它们,然后将结果保存到内部具有模式名称和grep输出的文件不起作用,创建空文件。grep模式并保存到具有模式名称的文件
我做错了什么?
while read p; do
grep $p big.txt >>$p
done < patterns.txt
正如评论所指出的,你最好引用变量,使其在patterns.txt
文件奇怪的字符将作为文本进行处理:
while IFS= read -r p; do
grep "$p" big.txt >> "$p"
done < patterns.txt
对IFS=
和read -r
的说明,请参见Read a file line by line assigning the value to a variable。
什么是'patterns.txt'文件?如果它包含带空格的名称,则可能有问题。 – fedorqui
'-f'选项从文件中读取模式:'grep -f patterns.txt big.txt >> output'但是如果你需要一个不同的文件foreach模式,那么你给了自己一个解决方案,除了你必须小心阅读模式包含的内容(斜线,空格,...)。那么,如果一个模式不匹配,当然你会有empy文件。试试'-c'选项来计算匹配次数;如果文件包含“0”(匹配),则表示您的模式不匹配输入的任何行。 – ShinTakezou
模式文件包含简单的单词列表,二级域名,不含斜杠点空格等,单词,带连字符的单词。使用-f标记空文件。 – user1983793