간단한 도구를 내 awk
/sed
요구 사항에 대한 고급 도구로 작성했습니다. 스크립트에서 쿼리 파일의 한 열에있는 값을 기준으로 두 파일을 비교 한 다음 마스터 파일에서 전체 항목을 추출합니다. 스크립트를 사용하면 각 파일의 열과 구분 기호에 대한 값을 입력 할 수 있습니다.python3의 파서는 argparse를 통해 명령 줄에서 구분 기호 값을 가져 오지 않습니다.
문제는 '구분 기호'옵션이 명령 줄에서 제공 될 때 스크립트에 의해 인식되지 않는다는 것입니다. 여기
은 (부분) 내 코드입니다 : 그래서 당신이 볼, 나는 명령 줄에서 '쿼리 파일'구분에 대한 옵션을 가지고argparse
를 통해 스크립트에서 사용할
##- - - - - - - -- - - - - - Arguments - - - - - - - - - - - - - -##
parser = argparse.ArgumentParser()
## Command line options
parser.add_argument("-m", "--master", dest="master", help="master file")
parser.add_argument("-q", "--query", dest="query", help="queries to be extracted")
parser.add_argument("-d", "--delimiter", dest="delimiter", default='\t', help="delimiter in master")
parser.add_argument("-p", "--position", dest="position", default='1', help="position/column of value in master")
parser.add_argument("-d2", "--delimiter2", dest="delimiter2", default='\t', help="delimiter in query")
parser.add_argument("-p2", "--position2", dest="position2", default='1', help="position/column of value in query")
args = parser.parse_args()
def Extractor(master, query):
out_file = ('%s_matched_%s' % (query,master))
fh_out = open(out_file, 'w')
query_set =() ## To unique query set
for i in query:
key = i.split('args.delimiter2')[int(args.position2)] ## Key is the value on which matching will be done
query_set.add(key)
,하지만 않습니다 작동하지. 내가 명시 적으로 같은 스크립트의 구분 기호를 언급 경우에만 작동합니다
key = i.split('\t')[args.position2] ## Key is the value on which matching will be done
내가주는 명령 행 옵션은 다음과 같습니다
ABC.csv
마스터 파일입니다$ py3 ExtractHeaders_v01.py -m ABC.csv -q XYZ.list -d2 \t -d , -p 1 -p2 0
어떤에서 항목을 추출합니다.
- 번째 열 가 매칭에 사용한다 (
-p 1
) - 그 구분은 쉼표 (
-d ,
)
- 번째 열 가 매칭에 사용한다 (
XYZ.list
쿼리 파일이다.- 첫 번째 열 가 일치에 사용됩니다 (
-p2 0
) - 그 구분은
- 첫 번째 열 가 일치에 사용됩니다 (
로부터 주어 졌을 때 나를 구분 기호가 스크립트에 의해 사용되지 않는 이유를 이해 도와주세요 탭 (-d2 \t
)입니다 명령 행
'$ '\ t'' 문자열을 사용할 수도 있습니다.'$'\ t''는'readline'이 활성화되어 있는지 여부에 상관없이'bash'에서 작동합니다. – chepner
더 나은 옵션입니다. 알아 둘만한! –
@Chepner : Perfecto ... 감사합니다. – Bade