perl – 将文件的所有单独段落放在一个单独的行中

前端之家收集整理的这篇文章主要介绍了perl – 将文件的所有单独段落放在一个单独的行中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含序列数据的文件,其中每个新段落(由两个空行分隔)包含一个新序列:

#example

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


SKJHDDSNLDJSCC
AK..SJSJSL--HG
AHSM---..SKSKK
-.-GHH

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

ASDHJDJJDMFFMFAKAKJSJSJSL---SMSM-....SKSKK....SK
SKJHDDSNLDJSCCAK..SJSJSL--HGAHSM---..SKSKK-.-GHH

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

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

我刚刚尝试过

sed -e '/./{H;$!d;}' -e 'x;/regex/!d' ./text.txt

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

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

谢谢.

解决方法

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

对于多个文件

# 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

猜你在找的Perl相关文章