특정 번호 검색

특정 번호 검색

나는 파일에 있는 숫자 목록이고 문자열에서 특정 숫자 1개를 검색합니다.

Es. 1 54 67 78 32
    11 4 67 89 90
    13 67 87 32 21

내 검색어는 1입니다.

이 숫자를 출력하려면 awk 또는 grep 명령을 사용하십시오.

1
11
13
21
grep -w 1
awk '/12/'

하지만 1번은 아님

이것이 올바른 조치입니까? 1행에서 특정 숫자 2개를 검색하시겠습니까?

답변1

그러면 지정된 숫자가 포함된 숫자를 원하시나요? 예를 들어 다음과 같이 숫자 패턴을 에 추가합니다 1.

grep -ow '[0-9]*1[0-9]*' infile

산출:

1
11
13
21

편집하다

Stéphane이 지적했듯이 이것은 양의 정수에만 작동합니다. 제안된 것과 유사한 보다 일반적인 솔루션을 원하는 경우여기더 좋아질 것입니다. 다음은 권장 정규식을 사용하는 perlre grep 버전입니다.

grep -oP '[+-]?(0|[1-9]\d*)(\.\d*)?([eE][+-]?\d+)?' infile

1a가 포함된 모든 숫자를 찾는 것은 이제 출력을 에 전달하기만 하면 됩니다 grep 1.

답변2

저는 아래 2가지 방법으로 해봤습니다

h=`awk '{print NF}' filename| sort | uniq| sort -nr | sed -n '1p'`
praveen@praveen:~$ for ((i=1;i<=$h;i++))
 do
 awk -v i="$i" '$i ~ /1/{print $i}' filename
done

나가

1
11
13
21

두 번째 방법

sed -r "s/\s+/\n/g" 파일 이름 awk '/1/{print $0}'

1
11
13
21

관련 정보