Linux는 열 수에 따라 개별적으로 행을 추출합니다.

Linux는 열 수에 따라 개별적으로 행을 추출합니다.

특정 열에 대해 특정 숫자의 행을 추출하고 싶습니다. 파일은 아래와 같습니다.

ID Age
1 2
2 5
3 36
4 2
5 29
...
2000 84

두 번째 열을 기반으로 별도의 파일에서 행을 추출하고 싶습니다.

for Num in {0..84}
do
awk '$2==${Num}' file > out_${Num}
done

위의 명령은 작동하지 않지만 비슷한 작업을 수행하고 싶습니다. 누구든지 나를 도와줄 수 있나요?

감사해요!

답변1

for num in {0..84}; do co=$(awk -v num="$num" '$2 == num {print $0}' file1|wc -l); if [[ $co > 0 ]]; then awk -v num="$num" '$2 == num {print $0}' file1 >out_$num;fi; done

테스트할 때 이 경우에는 작동합니다.

답변2

85번을 달릴 필요도 없고 wc, 170번을 달릴 필요도 없습니다 awk. 및 외에 $2제한 사항이 있나요 ? 내부에서 인쇄를 리디렉션해 보세요(무제한).$2 >= 0$2 <= 84awk

awk 'NR>1 {print > ("out_" $2)}' file

출력 파일이 허용된 최대 열린 파일 수(linux: 시스템 매개변수 OPEN_MAX)에 가까우면 다음을 수행해야 합니다.추가그들에게 줘.

관련 정보