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或其他东西中做到那么那也很棒.
谢谢.
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)