특정 열 값을 기준으로 행 선택 [중복]

특정 열 값을 기준으로 행 선택 [중복]

특정 열의 다른 값을 기반으로 텍스트 파일의 모든 행을 선택하는 방법은 무엇입니까? 원하는 값이 특정 범위 내에 있지 않습니다.

내가 기대하는 것에 대한 간단한 예가 아래에 나와 있습니다.

내 데이터는 텍스트 파일에 저장됩니다.input.txt

1.0     21
2.5     23
4.0     21
6.5     45
9.0     30
16.5    46
2.0     78
1.0     20
1.6     19
2.5     25
4.0     40
5.2     16
6.5     25
9.0     47
10.0    14
16.5    60
18.5    65
20.0    57
.
.etc

첫 번째 열의 값을 기준으로 행 2.5, 6.5, 16.5 등을 선택하고 싶습니다.

그러면 출력은 아래와 같습니다. 첫 번째 열을 기준으로 출력을 숫자로 정렬하고 싶지 않습니다.

2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

나는 해결책을 찾고 있습니다 awk.sedpaste

미리 감사드립니다.

답변1

awk조건 으로 숫자를 함께 묶을 수 있습니다 .

$ awk '$1==2.5 || $1==6.5 || $1==16.5' file
2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

물론, 목록이 너무 길면 정말 짜증날 수 있습니다. 또 다른 옵션은 원하는 숫자를 다른 파일에 저장하는 것입니다.

$ cat wantedNums
16.5
2.5 
6.5 

그런 다음 이를 사용하여 입력 파일을 필터링합니다.

$ awk 'NR==FNR{a[$1]++; next} $1 in a' wantedNums file
2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

관련 정보