Предположим, что все строки в файле 2 начинаются с sp|
и что строки sp|
в файле 1 не содержат символов регулярных выражений, которые могли бы запутать grep:
$ cat file.sh
while read line
do
case "${line}" in
sp\|*)
grep "^$line" file2 || printf '%s\n' "$line"
;;
*)
printf '%s\n' "$line"
esac
done
$ sh file.sh < file1
sp|B7UM99|TIR_ECO27OS=Escherichia coli
MPIGNLGNNVNGNHLIPPAPP.....
sp|P0ACF8|HNS_ECOLI=Human
MSEALKILNNIRTLRAQ........
sp|P24232|HMP_ECOLI=Flavohemoprotein
MLDAQTIATVKATIPLLVET..........
Я хотел бы использовать опцию -F для grep, но я чувствовал, что более важно требовать, чтобы совпадение было привязано к началу -строки -.
Я написал рабочий ответ на bash:
b=0; while read p; do if [[ $p == "Startpoint"* ]]; then b=1; fi; if [[ $b == 1 ]]; then echo $p; fi; if [[ $p == "slack"* ]]; then b=0; fi;done < input
Надеюсь, это поможет!. Это может быть не самый эффективный способ, но должен работать мой тестовый файл назывался input
, поэтому вы можете изменить его в конце строки. также для вывода в файл вы можете закончить с>> outfile