.txt
30개의 다른 파일에서 .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
이를 위해서는 이전과 이후의 경로가 *
정확히 동일해야 합니다.
고쳐 쓰다
파일이 순서대로 있으면(예: ERS224561
to ) 이 경우 스크립트는 다음과 같습니다 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