Как заменить и отредактировать содержимое файла?

У меня есть файл, который содержит следующее содержимое:

set0027:
set0027_100-250
set0027_1-150
set0027_50-200

set0038:
set0038_100-250
set0038_1-150
set0038_50-200

Я хочу изменить его следующим образом:

cd set0027
clustalw INFILE=set0027_100-250 OUTFILE=set0027_100-250.aln
clustalw INFILE=set0027_1-150 OUTFILE=set0027_1-150.aln
clustalw INFILE=set0027_50-200 OUTFILE=set0027_50-200.aln
cd ..
cd set0038
clustalw INFILE=set0038_100-250 OUTFILE=set0038_100-250.aln
clustalw INFILE=set0038_1-150 OUTFILE=set0038_1-150.aln
clustalw INFILE=set0038_50-200 OUTFILE=set0038_50-200.aln
cd ..

Как я могу сделать это, используя скрипт bash?

1
задан 10 May 2019 в 15:47

1 ответ

Примерно так будет работать:

$ perl -npe 's/(.*):/cd \1/; s/^(set.*)/clustalw INFILE=\1 OUTFILE=\1.aln/; s/^\s+/cd ..\n/;' file
cd set0027
clustalw INFILE=set0027_100-250 OUTFILE=set0027_100-250.aln
clustalw INFILE=set0027_1-150 OUTFILE=set0027_1-150.aln
clustalw INFILE=set0027_50-200 OUTFILE=set0027_50-200.aln
cd ..
cd set0038
clustalw INFILE=set0038_100-250 OUTFILE=set0038_100-250.aln
clustalw INFILE=set0038_1-150 OUTFILE=set0038_1-150.aln
clustalw INFILE=set0038_50-200 OUTFILE=set0038_50-200.aln

использует параметры командной строки

-n implicit loop
-e execute perl inline
-p print line
0
ответ дан 10 May 2019 в 15:47

Другие вопросы по тегам:

Похожие вопросы: