Печатать полный набор строк, если он соответствует шаблону [закрыто]

Предположим, что все строки в файле 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, но я чувствовал, что более важно требовать, чтобы совпадение было привязано к началу -строки -.

-3
31.03.2021, 16:07
1 ответ

Я написал рабочий ответ на 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

0
28.04.2021, 22:54

Теги

Похожие вопросы