fasta 파일이 여러 개 있고 ">"(따옴표 제외)로 시작하는 줄 수를 계산하고 싶습니다.
내가 평소에 하는 일은
grep ">" file.fasta | wc -l
이 시간은 하나의 파일에 적용됩니다. 나는 다음을 사용하여 다른 대안을 시도하고 있습니다.찾다명령을 실행했지만 아무것도 작동하지 않는 것 같습니다. 내가 원하는 마지막 것은 한 줄씩, 파일 이름을 지정하고 >로 시작하는 줄 수를 계산하는 것입니다. 이상적으로는 한 줄이어야 합니다.
답변1
grep
플래그를 사용하여 계산할 수 있으므로 -c
필요 wc -l
하지 않습니다. 또한 grep
여러 파일을 제공하는 경우 해당 파일이 입력으로 사용됩니다.
예를 들어,
grep -c '^>' some/dir/*.fa
이 작업을 재귀적으로 수행하려면 해당 옵션을 알고 있는 옵션이 grep -Rc '^>' dirname
있는 경우 사용하십시오 (이것은 실행됩니다).grep
-R
모두파일), 그렇지 않으면 다음을 사용하십시오 find
.
find dirname -type f \( -name '*.fa' -o -name '*.fasta' \) -exec grep -c '^>' /dev/null {} +
/dev/null
위 명령의 추가 항목은 grep
최소한 두 개의 입력 파일을 가져오도록 하고, 결과적으로 처리하는 파일의 이름을 항상 표시하도록 보장합니다(단일 입력 파일에 대해서는 이 작업을 수행하지 않음). 비표준 옵션이지만 와 -H
함께 사용할 수도 있습니다 .grep
또는 경로 이름이 다음과 같은 루프에 원래 명령을 삽입하십시오 find
.
find dirname -type f \( -name '*.fa' -o -name '*.fasta' \) -exec sh -c '
for pathname do
printf "Counting in %s...\n" "$pathname"
grep "^>" "$pathname" | wc -l
done' sh {} +
귀하의 명령 자체는 파일 이름을 보고하지 않으므로 printf
이를 언급하는 설명을 추가했습니다.
관련된: