gpt4 book ai didi

bash - 从文件开头开始 grep (grep -f )

转载 作者:行者123 更新时间:2023-11-29 09:26:28 24 4
gpt4 key购买 nike

我使用命令 | grep -f - file 从文件中提取管道内容。
但是,我只想在匹配字符串位于行首时才提取。通常我使用 grep '^string',但它不适用于 grep -f

grep -f '^-' file
grep: ^-: No such file or directory

如何同时使用 grep -f -grep '^'

最佳答案

grep -f 用于包含模式的文件。

您不能调用 grep -f '^-' 因为它不会将 '^-' 作为模式,而是作为文件名

如果你不想使用文件,你可以使用管道

grep -f -,其中 - 是获取标准输入/管道而非文件的信号。

举个例子

回显 ^a | grep -f - file.txtgrep '^a' file.txt

相同

更好的用法是只从某个文件中获取一些模式,并将该模式​​用于您的文件

grep '^PAT' patterns.txt | grep -f - 我的文件

这将从文件 patterns.txt 中获取所有以 PAT 开头的模式,并使用下一个 grep 中的这些模式在 myfile 中搜索。

因此您可以在文件 patterns.txt 中包含字典并使用它在 myfile 文件中进行搜索。

如果您有某种字典(文件中的字符串列表,以换行符分隔)并希望将其用作包含行开头字符串的模式,而您没有 ^字典,你可以使用 sed

grep '^abc' 字典.txt | sed 's/^/^/g' | grep -f - 我的文件

因此,给定文件 dict.txt

a
abc
abcd
fbdf

将首先 grep 获取“abc”和“abcd”,并在它们前面加上 ^

然后调用grep -e '^abc' -e '^abcd' myfile

注意 ^abcd^abc 的子集。所以你可能会在你的字符串末尾有一个空格(或另一个分隔符)

grep '^abc' 字典.txt | sed 's/^/^/;s/$/\/' | grep -f - 我的文件

关于bash - 从文件开头开始 grep (grep -f ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com