将文件的所有单独段落放在单独的行中

bru*_*lin 5 perl sed text-manipulation

我有一个包含序列数据的文件,其中每个新段落(由两个空行分隔)包含一个新序列:

#example

ASDHJDJJDMFFMF
AKAKJSJSJSL---
SMSM-....SKSKK
....SK


SKJHDDSNLDJSCC
AK..SJSJSL--HG
AHSM---..SKSKK
-.-GHH
Run Code Online (Sandbox Code Playgroud)

我想得到一个文件看起来像:

ASDHJDJJDMFFMFAKAKJSJSJSL---SMSM-....SKSKK....SK
SKJHDDSNLDJSCCAK..SJSJSL--HGAHSM---..SKSKK-.-GHH
Run Code Online (Sandbox Code Playgroud)

每个序列长度相同(如果有帮助的话).

我也希望在存储在不同directiories中的多个文件上执行此操作.

我刚刚尝试过

sed -e '/./{H;$!d;}' -e 'x;/regex/!d' ./text.txt
Run Code Online (Sandbox Code Playgroud)

但是这只是删除了整个文件:S

任何帮助都会受到赞赏 - 不必是sed,如果你知道如何在perl或其他东西中做到那么那也很棒.

谢谢.

gle*_*man 2

awk '
    /^[[:space:]]*$/ {if (line) print line; line=""; next}
    {line=line $0}
    END {if (line) print line}
'
Run Code Online (Sandbox Code Playgroud)
perl -00 -pe 's/\n//g; $_.="\n"'
Run Code Online (Sandbox Code Playgroud)

对于多个文件:

# adjust your glob pattern to suit, 
# don't be shy to ask for assistance
for file in */*.txt; do
    newfile="/some/directory/$(basename "$file")"
    perl -00 -pe 's/\n//g; $_.="\n"' "$file" > "$newfile"
done
Run Code Online (Sandbox Code Playgroud)