나는 파일에 있는 숫자 목록이고 문자열에서 특정 숫자 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
1
a가 포함된 모든 숫자를 찾는 것은 이제 출력을 에 전달하기만 하면 됩니다 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