2012-06-16 6 views
0

두 개의 텍스트 파일이 있습니다. hash_only.txt 및 final_output.txt hash_only.txt는 다음과 같습니다.awk 출력의 제어 간격

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 모든 값

awk ' 
FNR==NR { 
    hash[$1] 
    next 
} 
$1 in hash { 
    print $2,'\t',$3 >> "ecast_print_"$1; 
}' hash_only.txt final_output.txt 

여기서 1 개 열에 일치 193548,401125 등 출력 컬럼 2 , 3 to print_193548, print_401125 etc. 그러면 다음과 같이 출력됩니다.

1133254688 5698771509078629376 
1150031904 5698771509371165696 
1150031904 5698771510035551232 
4170258464 5698771510036082688 
2895583264 5698771510036715520 
1620908064 5698771510037202176 
346232864 5698771510037665280 
3366459424 5698771510038193664 
2091784224 5698771510332259072 
817109024 5698771510332816128 
3837335584 5698771510333344512 
2562660384 5698771510339882240 

첫 번째 필드의 길이가 작은 경우 normal.I 정확한 location.I가로 제공하도록이 필요에서 두 번째 줄 시작할 것보다 잘못 정렬되어 출력 위에서 볼 수 있듯이 gnuplot.Any 도움을 주시면 감사하겠습니다.

답변

1

당신 (GNU이 나오지도)에 대한이 작동 될 수 있습니다

설명
sed 's|.*|/^& /{s/.\\{12\\}//;w ecast_print_&\n}|' hash_only.txt | 
sed -nf - final_output.txt 

:

가 추가 된 키를 사용하여 파일 이름 ecast_print_에 일치하는 행을 기록하는 hash_only.txt 파일에서 나오지도 스크립트를 작성합니다. 처음 12 문자는 sed 스크립트에 제공된 입력 파일에서 삭제됩니다.

2

printf을 사용하면 필드의 너비가 일정 해집니다.

또한 gnuplot은 필드가 파일에서 완벽하게 정렬되지 않았는지 여부를 신경 쓰지 않습니다. 필요한 것은 필드가 공백으로 구분된다는 것입니다.