두 개의 텍스트 파일이 있습니다. hash_only.txt 및 final_output.txt hash_only.txt는 다음과 같습니다.bash를 사용한 파일 및 텍스트 처리
193548
401125
401275
final_output.txt는 다음과 같습니다.
193548 1199687744 5698758206701808640
193548 1216464960 5698758206761818112
193548 1216464960 5698758206778417152
193548 4236691520 5698758206778945280
401125 2138607488 5698762375908890880
401125 863932288 5698762375909423360
401125 3884158848 5698762375910044160
401125 2609483648 5698762375911032320
다음을 수행하는 루프를 작성하려고합니다. I '는 final_output.txt'파일로부터 열을 추출 2,3- 할 등과 같은 193548,401125 hash_only.txt 모든 값
for i in `cat hash_only.txt` ;
do
for j in `cat final_output.txt` ;
do
if [ $i -eq $j ]
then
echo $i $j
fi
done
done;
여기서 1 개 열에 일치 193548,401125 등 출력 컬럼 2 , 3 to print_193548, print_401125 등
위의 코드에서 나는 bash에 능숙하지 않기 때문에 그 부분에 코드를 넣어야합니다. 그러나 나는 그것을 이해할 수 없습니다.
편집 :
지금 cat hash_only.txt
에 내가 likefor 보는 내 스크립트를 수정 한;
do
for j in `cat final_output.txt` ;
do
if [ $i -eq $j ]
then
gawk 'FNR==NR
{ hash[$1]
next
}
$1 in hash {
print $2,$3 >> "print_"$1;
}' hash_only.txt final_output.txt
fi
done
done;
print_ [0-9] *라는 파일을 만들지 않습니다. 왜 그런지 이해할 수 없습니까?
그래서 여러 파일을 만들고 싶습니다. 맞습니까? 첫 번째 파일의 고유 한 값마다 하나씩? –
예. 정확히 내가 원하는 것입니다. – liv2hak
'gawk' 명령은 모든 작업을 수행합니다. 'if ... else' /'for ... loop'을 삭제할 수 있습니다. – kev