특정 열에 대해 특정 숫자의 행을 추출하고 싶습니다. 파일은 아래와 같습니다.
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 <= 84
awk
awk 'NR>1 {print > ("out_" $2)}' file
출력 파일이 허용된 최대 열린 파일 수(linux: 시스템 매개변수 OPEN_MAX)에 가까우면 다음을 수행해야 합니다.추가그들에게 줘.