Linuxでファイルを解析したいです。基本的にこのようなパターンが出るたびに[protein=proteinA]
維持したいproteinA
。つまり、次の9文字の間のすべての文字を維持したいと思います。
[protein=
そしてキャラクター:
]
ファイルのすべてのパターンに対してこれを行いたいと思います。結果は次のとおりです。
proteinA
proteinB
proteinC
proteinD
Linuxでこれを達成するための簡単なコマンドは何ですか?
答え1
簡単なsed
解決策は
sed 's/\[protein=\(.*\)]/\1/'
入力のすべての行が同じように見える場合は、上記のコマンドが正しく機能しています。他の種類のデータがあり、上記で得られた結果が気に入らない場合は、目的の結果を指定する必要があります。[protein=something]
答え2
テキストを含めることができるラベルの一般的な回避策は、次のsedコマンドを使用することです。
sed -i.bak 's/\[[^=]*=\([^]]*\)]/\1/g' <file to process>
[tagname=something]
このコマンドは、およびで機能し、タグ名では[tagname=
なく]
何でも構いませんprotein
。
-i.bak
ファイルを処理し、元のファイルを.bak
拡張子とともにファイル名に追加します。
答え3
grep
希望のデータを直接出力できます。
$ grep -oP '\[protein=\K((?!]).)+(?=])' file