我有一个包含序列数据的文件,其中每个新段落(由两个空行分隔)包含一个新序列:
#example
ASDHJDJJDMFFMF
AKAKJSJSJSL---
SMSM-....SKSKK
....SK
SKJHDDSNLDJSCC
AK..SJSJSL--HG
AHSM---..SKSKK
-.-GHH
我想最终得到一个如下所示的文件:
ASDHJDJJDMFFMFAKAKJSJSJSL---SMSM-....SKSKK....SK
SKJHDDSNLDJSCCAK..SJSJSL--HGAHSM---..SKSKK-.-GHH
每个序列的长度相同(如果有帮助)。
我还希望对存储在不同目录中的多个文件执行此操作。
我刚试过
sed -e '/./{H;$!d;}' -e 'x;/regex/!d' ./text.txt
然而这只是删除了整个文件:S
任何帮助将不胜感激 - 不必在 sed 中,如果您知道如何在 perl 或其他东西中做到这一点,那也很棒。
谢谢。
最佳答案
您需要做的就是将每个字段由换行符分隔的空行分隔记录 (RS) 文件转换为每个字段都没有任何分隔 (OFS) 的换行分隔记录文件。只需设置适当的 awk 变量并重新编译记录:
$ awk '{$1=$1}1' RS= OFS= file
ASDHJDJJDMFFMFAKAKJSJSJSL---SMSM-....SKSKK....SK
SKJHDDSNLDJSCCAK..SJSJSL--HGAHSM---..SKSKK-.-GHH
关于perl - 将文件的所有单独段落放在单独的行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971812/