LoginSignup
6
4

More than 5 years have passed since last update.

参照ファイルを用いて、複数のテキスト置換を一括で行う

Last updated at Posted at 2017-08-26

※プログラミングレベルは高くないので、より良い方法があれば教えてください

概要

複数のサンプルのfasta/fastqを1つのファイルにまとめてしまった後に、ヘッダーを修正したいときのためのシェルスクリプト。
テキストの置換件数が多いため、参照となるリストファイルを作成し、一度に複数のテキスト置換を行う。

参考:FASTQ Filesのフォーマット
http://support.illumina.com/content/dam/illumina-support/help/BaseSpaceHelp_v2/Content/Vault/Informatics/Sequencing_Analysis/BS/swSEQ_mBS_FASTQFiles.htm

コマンド

xargsを用いたワンライナーを教えてもらいました(2017/9/2更新)

sed 's/\([^\t]*\)\t\(.*\)/s|\1|\2|g/' rename.list | xargs -I{} sed -i '{}' test.fna

旧シェルスクリプト

#!/bin/bash

list="rename.list"
file="test.fna"

# 行数分のループを回す
seq=`cat $list | wc -l`

for i in `seq $seq`
do
    name=`cat $list | awk -F'\t' "NR==${i}" | cut -f1`;
    rename=`cat $list | awk -F'\t' "NR==${i}" | cut -f2 `;
    sed -i "s/$name/$rename/g" $file
done

ファイル

rename.list

AAA-BBB-CCC_S1  AAA-BBB-CCC-1_S1
AAA-BBB-CCC_S2  AAA-BBB-CCC-2_S2

6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4