我希望从几行文件中获取一个ID,然后在使用sed之前和之后添加一些信息 - 我不想使用其他任何内容。 例如 原始行看起来像:
19F_4414_2.aln:>tai19F_14 Taiwan19F_14
我想打印:
pathfind -t lane -id tai19F_14 -f fastq -l .
到目前为止,我有:
grep ">" 19F_4414*.aln | sed -e 's/^.*>/pathfind -t lane -id /1; s/ .*//5'
第一次替换有效,但第二部分没有。如果我添加星号,它不会替换该行的结尾,但是单个句点只替换一个字母。如果你能告诉我原因,以及如何解决这个问题。
答案 0 :(得分:1)
你可以这样做:
sed 's/>\([^[:blank:]]*\).*$/pathfind -t lane -id \1 -f fastq -l ./' 19F_4414*.aln
pathfind -t lane -id tai19F_14 -f fastq -l .
答案 1 :(得分:1)
我会这样尝试
sed 's/.*aln:>\(\S*\).*/pathfind -t lane -id \1 -f fastq -l/g'
答案 2 :(得分:0)
这有效:
sed -e 's/^.*>/pathfind -t lane -id /1; s/ [^ ]*$/ -f fastq -l ./'
[^ ]*$
在行尾($
)之前直接匹配每个非空格。
答案 3 :(得分:0)
sed -r 's/^.*>(.*) .*/pathfind -t lane -id \1 -f fastq -l/
文件名。