특정 디렉터리(main_directory)에 24개의 디렉터리가 있습니다. 각 24개의 디렉터리에는 이름이 DATA.txt인 텍스트 파일이 있습니다.
각 텍스트 파일에 대해 아래의 특정 패턴을 추출하려면 grep 명령을 사용해야 합니다.
2* x = 3800689.6402 y = 882077.3636 z = 5028791.2953
2* x =
부분은 모든 DATA.txt에 대해 일정합니다. 다른 숫자는 가변적입니다. 각 DATA.txt에 대해 위 줄을 추출하여 다른 텍스트 파일에 저장해야 합니다. 이 프로세스에 어떤 스크립트를 사용할 수 있나요?
답변1
를 사용하여 재귀적으로 검색하려면 옵션 grep
을 사용하십시오 -R
.
정확한 문자열을 검색하려면 를 사용하세요 -F
. 그러면 2*
정규식으로 처리되지 않습니다.
특정 파일 이름만 검색하려면 이 --include
옵션을 사용하세요. 결합:
grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
답변2
대상 파일의 이름을 알고 있으므로 다음을 수행할 수도 있습니다.
grep '^2\* x' */DATA.txt > newfile
또는 다음을 사용하여 awk
:
awk '^/2\* x/' */DATA.txt > newfile
그리고 펄:
perl -ne 'print if /2\* x/' */DATA.txt > newfile
답변3
일반적인 접근:
grep -r <pattern>
또는
구체적인 접근 방식:
find -name <file patterns which you want to find> | xargs grep <pattern you looking for>