2 个带有管道的 grep 调用无法按预期工作

2 个带有管道的 grep 调用无法按预期工作

我想出了以下命令:grep 'rtl' reg_list.txt | grep -E -o -n "id_\w+" reg_list.txt

这个想法是,首先 grep 包含 rtl 内容的行,然后 grep 仅以 id_ content 开头的单词。这些数据在表中,第一列包含rtl,第二列包含id_数据。

问题是,第一个 grep 的结果没有传递给第二个 grep。

reg_list.txt 由不同类型的数据组成,例如行、带有列和行的表。

答案1

第一个的结果grep 传递给第二个grep,但由于您为第二个提供了grep文件名,因此它不会读取它(而是从文件中读取)。

反而:

grep 'rtl' reg_list.txt | grep -E -o -n 'id_[[:alnum:]]+'

我也更改\w[[:alnum:]]since\w是PCRE正则表达式。如果您grep是GNU grep,您可以保留\w并使用grep -P

相关内容