파일에서 문자열 추출 및 병합(파이썬)

파일에서 문자열 추출 및 병합(파이썬)

여러 하위 폴더가 있는 디렉터리가 있고 모든 하위 폴더에는 여러 텍스트 파일이 포함되어 있으며 이러한 텍스트 파일의 형식은 다음과 같습니다.

data01:data02

나중에 data02를 추출하여 :루트 디렉터리의 단일 파일로 내보내야 합니다. 추출을 완료했지만 여러 디렉터리와 파일에서 어떻게 실행합니까?

답변1

"find" 및 "awk"를 사용하여 다음 명령줄을 사용자 정의할 수 있습니다.

find FOLDERLIST -type f -iname "PATTERN" \
     -exec awk -F":" 'NF>1 {print $2}' "{}" \; > /PATH/TO/RESULTFILE

어디

  • FOLDERLIST는 재귀적으로 검색할 최상위 폴더의 공백으로 구분된 목록입니다. 여기서 "현재 폴더"는 점입니다( find ). - F를 입력하세요...
  • "-type f"는 파일 검색에만 사용됩니다.
  • PATTERN은 관심 있는 파일에 대한 일반적인 패턴입니다. 예를 들어 별표 "*"는 모든 파일을 찾고, "*.csv"는 CSV 파일을 찾습니다...
  • /PATH/TO/RESULTFILE은 루트 디렉터리에 있는 결과 파일의 이름입니다.
  • "awk" 부분은 ":"에서 발견된 모든 파일을 분할하고 빈 결과를 건너뜁니다.

편집: Steeldriver가 제안한 대로 null 결과 검사를 NF>1로 조정했습니다.

답변2

출력 파일의 형식을 제공하지 않았으므로 두 번째 필드가 별도의 줄에 있기를 원한다고 가정합니다. 다음을 사용할 수 있습니다(모든 파일이 a:b질문에 언급한 형식이라고 가정 ).

find directory -type f \
-exec awk -F: '{print $2}' "{}" >> /output.txt \;

directory하위 디렉토리에서 파일을 찾아 명령을 실행하면 결과 awk -F: '{print $2}' "{}" >> /output.txt값이 :file에 기록됩니다 /output.txt.

관련 정보