使用 unix 命令在文件中以 > 开头的每行末尾添加一个单词

使用 unix 命令在文件中以 > 开头的每行末尾添加一个单词

我有一个包含 ~25000 fasta 格式序列的文本文件,我想在每行末尾添加一个以 > 开头的单词。

答案1

您没有指定是否必须将相同的单词附加到匹配行(以 开头的行>),因此我假设了最简单的情况。下面sed在以 开头的所有行的末尾添加“ PLOP” >

tmpFile=$(mktemp)
echo -e 'hello world\n>FASTA sequence\nhello again' > "$tmpFile"
echo 'BEFORE :'
cat "$tmpFile"
sed -ri '/^>/ s/^(.*)$/\1 PLOP/' "$tmpFile"
echo 'AFTER :'
cat "$tmpFile"
[ -f "$tmpFile" ] && rm "$tmpFile"

答案2

解决方案与awk

awk '{ if ($0 ~ "^>") { $0=$0" added" }} {print $0}' list

或者sed

sed -E "s|^>(.+)$|>\1 added|" list

相关内容