结合使用grep命令和单词数组

X3nion

我有一个带有几行的文本文件,并使用以下命令将文本文件保存到一个数组中

readarray -t array < Textfile

文本文件包含例如以下内容:

123
456
789

现在,我想使用grep命令在使用该数组的另一个文本文件中查找结果,因此打印出出现“ 123”,“ 456”或“ 789”的行。为了测试数组,我尝试让 grep 查找“123”、“456”和“789”相同的文本文件并输出匹配的行,如果三个字符系列中至少有一个出现。

我试过了

grep "${array[*]}" Textfile

但这没有显示任何结果。我究竟做错了什么?

大学教师

首先,您可以只使用文件本身。这比尝试使用 shell 数组简单得多:

grep -f file1.txt file2.txt

这将打印file2.txt匹配中的任何行的任何行file1.txt

如果出于某种原因必须使用数组,则事情会更加复杂。你不能只做grep "${array[*]}" Textfile因为"${array[*]}"将扩展到由空格分隔的数组中的元素列表:

$ array=("foo" "bar" "baz")
$ echo "${array[*]}"
foo bar baz

这意味着您的grep命令将变为:

grep 'foo bar baz' file

这意味着“foo bar baz文件中的grep file”。你想要做的是 grep for foo, or bar , or baz这可以使用 -E 选项grep并加入您要搜索的模式来完成|

grep -E 'foo|bar|baz' file

为此,您需要做一些复杂的事情,例如:

grep -E "$(printf '%s|' "${array[@]}" | sed 's/|$//')" file

也许:

grep -E "$(export IFS="|"; echo "${array[*]}")" file

总的来说,使用文件更好、更快、更容易,而无需考虑数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用单词数组和子节点数组重新创建段落?

grep和awk,结合命令?

使用包含搜索单词数组或包含单词数组的字符串

使用grep计算包含子字符串的单词数

使用javascript将单词数组与图像数组配对

使用字符对指针来表示“单词数组”

您如何使用Ramda对单词数组进行排序?

使用Regex在js中将Solresol单词数组化

使用字典将单词数组拆分为字符

在bash中结合Grep和Paste命令

在单词数组中搜索单词

在单词数组中查找反向单词

使用perl数组的grep和sed等unix命令

使用特定单词java将字符串拆分为单词数组

使用-grep可以计算以“ bar”开头,以“ i”或“ n”结尾的6个字母的单词数

结合grep命令的输出

在Python中创建找到的单词数组

根据单词数组检索句子

试图从单词数组中删除消息

如何从文件中制作单词数组?

根据单词数组排除标准输出

Shell数组变量中的元素/单词数

在单词数组中查找匹配字符串的开头和结尾的索引

在Unix Shell脚本中不使用'wc'命令而计算文本文件中的单词数

如何使用开始和结束单词数组PHP查找字符串中的所有子字符串

如何通过空格分隔字符串,并使用正则表达式忽略开头和结尾的空格成单词数组?

wordnet.lookup是异步函数吗?尝试使用wordnet和自然语言为句子中的每个单词构建同义词数组

在数组上使用GREP查找单词

使用单词数组创建活动的管理员输入下拉列表