grep:使用while循环时无效的重复计数

时间:2019-03-04 10:41:29

标签: bash grep fasta

所以我正在使用MacOS命令行并有两个文件

文件A.txt

A
B
F

文件B.txt

>A
abcde
>B
efghi
>C
jklmn
>D
opqrs
>E
tuvwx
>F
yz123

我希望它在文件A.txt中进行一次while循环,并且只打印文件B.txt中的相应标题和内容

>A
abcde
>B
efghi
>F
yz123

当我逐个浏览文件A中的每一行时,此行有效。 grep -n "\A\,\>\{x;p;}" B.txt

但是当我这样做时: While read i; do grep -n "\$i\,\>\{x;p;}" B.txt >> newfile.txt; done < A.txt

我收到此错误: grep: invalid repetition count(s)

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

使用grep,您可以使用:

/bin/grep -A1 -Ff fileA fileB 
>A
abcde
>B
efghi
--               <--- produces separators
>F
yz123

或者用awk:

awk 'NR==FNR{a[$0];next}{sub(/^>/,"")} $0 in a {print ">"$0;p=1;next} p{print;p=0}' fileA fileB 
>A
abcde
>B
efghi
>F
yz123