0

我想从多个文件的一行中获取一个 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'

第一个替换有效,但第二部分无效。如果我添加星号,它不会替换行尾,但单个句号只会替换一个字母。如果你能告诉我为什么,以及如何解决这个问题。

4

4 回答 4

1

我会这样尝试

sed 's/.*aln:>\(\S*\).*/pathfind -t lane -id \1 -f fastq -l/g'
于 2014-12-20T14:40:20.690 回答
1

你可以做:

sed 's/>\([^[:blank:]]*\).*$/pathfind -t lane -id \1 -f fastq -l ./' 19F_4414*.aln
pathfind -t lane -id tai19F_14 -f fastq -l .
于 2014-12-19T10:45:54.947 回答
0

这有效:

sed -e 's/^.*>/pathfind -t lane -id /1; s/ [^ ]*$/ -f fastq -l ./'

Where[^ ]*$匹配行尾 ( ) 之前的每个非空格$

于 2014-12-19T10:45:40.613 回答
0

sed -r 's/^.*>(.*) .*/pathfind -t lane -id \1 -f fastq -l/文件名。

于 2014-12-19T12:05:23.207 回答