카테고리 없음

[세게 때리다] grep을 사용하여 파일에서 문자열의 첫 번째 발생 줄 번호 가져 오기

행복을전해요 2021. 1. 25. 03:55
grep -n -m 1 SEARCH_TERM FILE_PATH |sed  's/\([0-9]*\).*/\1/'

grep 스위치

-n = 줄 번호 포함

-m 1 = 하나 일치

sed 옵션 (스트림 편집기) :

's/X/Y/' -X를 Y로 대체

\([0-9]*\) -숫자를 0 번 또는 여러 번 일치시키는 정규식이 발생했습니다. 이스케이프 된 괄호, 괄호 안의 정규식과 일치하는 문자열은 Y (대체 문자열)의 \ 1 인수가됩니다.

\([0-9]*\).*- .*제로 또는 여러 번 발생하는 모든 문자와 일치합니다.

-------------------

grep에서 변수 대체를 위해 $ ()가 필요합니다.

cpLines=$(grep -n -m 1 $VAR $MYDIR/Configuration.xml |cut -f1 -d: )
-------------------

다음과 같이 시도하십시오.

awk -v search="$var" '$0~search{print NR; exit}' inputFile

에서 awk, / /해석합니다 awk그대로 변수를. match( ~) 연산자 를 사용해야 합니다. 여기서 우리가하는 일은 입력 라인에 대한 변수를 찾는 것입니다. 일치하면 저장된 줄 번호를 인쇄 NR하고 종료합니다.

-v위의 예에서 awk변수 ( search) 를 만들 수 있습니다 . 그런 다음 bash변수 ( $var) 를 할당합니다 .

-------------------
grep -n -m 1 SEARCH_TERM FILE_PATH | grep -Po '^[0-9]+'

설명:

 -Po = -P -o

-P Perl 정규식 사용

-o 일치하는 문자열 만 인쇄 (전체 행이 아님)

-------------------

파이핑을 시도하십시오.

grep -P 'SEARCH TERM' fileName.txt | wc -l



출처
https://stackoverflow.com/questions/22019847