파이프가 예상대로 작동하지 않는 2개의 grep 호출

파이프가 예상대로 작동하지 않는 2개의 grep 호출

나는 다음 명령을 생각해 냈습니다.grep 'rtl' reg_list.txt | grep -E -o -n "id_\w+" reg_list.txt

아이디어는 먼저 rtl 콘텐츠가 포함된 줄을 grep한 다음 id_ content로 시작하는 단어에 대해서만 grep하는 것입니다. 데이터는 테이블에 있으며 첫 번째 열에는 rtl이 포함되고 두 번째 열에는 id_data가 포함됩니다.

문제는 첫 번째 grep의 결과가 두 번째 grep으로 전달되지 않는다는 것입니다.

reg_list.txt는 행, 열과 행이 있는 테이블과 같은 다양한 유형의 데이터로 구성됩니다.

답변1

첫 번째 결과grep 두 번째 항목에 전달되었지만 grep두 번째 항목에 grep파일 이름을 지정했기 때문에 읽지 않습니다(대신 파일에서 읽음).

대신에:

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

\w또한 그 이후로 PCRE 정규식으로 [[:alnum:]]변경 했습니다 . \w당신 grep이 GNU라면 grep, 그것을 유지 \w하고 사용할 수 있습니다 grep -P.

관련 정보