初めに
テキスト内の一部の文字を一気に大文字(uppercase)or小文字(lowercase)にしたいとき、ありますよね。
筆者の場合、研究活動でプログラムを使っていくと、「なんで小文字になっちゃってんの???」ってなることがあるので、変換をよく使います(小文字であることに意味がある場合があるので注意は必要ですが・・・)。
今回は以下のテキストファイル中の一部分の大きさを変換させます(before.txt
からafter.txt
)にします
One-line
aaaaccccgcttt
Two-line
ggttacaaagtca
2行目と4行目を小文字から大文字に変換
One-line
AAAACCCCGCTTT
Two-line
GGTTACAAAGTCA
目次
-
awk
を使おう -
vim
で編集しよう - その他変換コマンド
awk
を使おう
toupper
とtolower
で一括変換だ!!
これもおすすめです。ifと組み合わせれば任意行を変換できます。こちらの方法は、何もゲノムファイルに限らず使えますね。小文字にしたければtoupper
をtolower
にしようね。
awk '{if($0 !~ ">"){print toupper($0)}}' before.txt > after.txt
# ifで1行目と3行目を除いて、大文字に変換!
なんでおすすめなの?
行を選択的に処理できるのがawk
の利点だからです。
if文を駆使すれば加工したい行をうまく選択できますね。
条件文については別の機会にまとめます。
vim
で編集しよう
マニュアルで変換していこう
変換部分が少ない場合はこの方法も良いです。
小文字化する場合はu
を使いましょうね。
便利だけど・・・
ファイル開いて・・・選択して・・・ってめんどくさいですよね。
また、マニュアル操作なのでミスの可能性が孕んでます。
変換対象が多かったり、読者の方が私みたいにテキトー(笑)な人は、awk
使いこなしていきやしょうね。
その他変換コマンド
tr
ファイル内のすべての文字を変換するのに使えます。コマンドは以下の通りです。
#小文字to大文字
tr a-z A-Z < file1 > file2
#大文字to小文字
tr A-Z a-z < file1 > file2
選択的に加工できないですけどね、方法があるのでしょうか
終わりに
この中だとawk
が便利ですね。何より応用が効くので。