여러 로그 파일에서 정보 추출

여러 로그 파일에서 정보 추출

.txt30개의 다른 파일에서 .log수집된 한 줄만 포함하는 파일을 만들려고 합니다 . 하나의 행만 추출하려면 다음을 사용했습니다.

$ sed -n '/Num mapped reads/p' /home/travc/seq_v2/AgamP4_v2/samples/ERS224561/qualimap/qualimap.log > /data/home/odkirling/Mali/Yeah1.txt

잘 작동하지만 이제 다른 29개 파일에 대해 이 작업을 수행해야 합니다. 어떻게 해야 합니까?

답변1

다음과 같은 것을 시도해 볼 수 있습니다.

for filepath in $(ls -1 /home/travc/seq_v2/AgamP4_v2/samples/*/qualimap/qualimap.log);
do
  sed -n '/Num mapped reads/p' $filepath >> /data/home/odkirling/Mali/Yeah1.txt
done

이를 위해서는 이전과 이후의 경로가 *정확히 동일해야 합니다.

고쳐 쓰다

파일이 순서대로 있으면(예: ERS224561to ) 이 경우 스크립트는 다음과 같습니다 ERS224591.seq 61 91

for filenum in $(seq -w 30 150);
do
  sed -n '/Num mapped reads/p' "/home/travc/seq_v2/AgamP4_v2/samples/ERS2245$filenum/qualimap/qualimap.log" >> /data/home/odkirling/Mali/Yeah1.txt
done

또는 다음 형식의 텍스트 파일에 디렉터리 목록이 있다고 가정합니다.

ERS224591
ERS224592
ERS224523
ERS224525
.
.
.

그러면 당신은 다음과 같은 것을 할 수 있습니다

for dirname in $(cat dir_names.txt);
do
  sed -n '/Num mapped reads/p' "/home/travc/seq_v2/AgamP4_v2/samples/$dirname/qualimap/qualimap.log" >> /data/home/odkirling/Mali/Yeah1.txt
done

dir_names.txt디렉토리 이름이 포함된 파일입니다. 마찬가지로 요구 사항에 따라 파일 경로의 일부를 바꿀 수 있어야 합니다.

답변2

sed단일 파일로 제한하지 않고 입력 스트림에서 작동합니다. 예를 들어 파일 경로에 와일드카드를 제공하여 여러 파일을 사용합니다..../ERS*/.../*log

관련 정보