我想出了以下命令: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
。