Согласно соответствующим сообщениям об ошибках (например, FS#41728 - [systemd] coredumps, 100% cpu usage, X hanging и systemd-coredump 100% CPU usage), дампы ядра в Linux инициируются в ядре, и оно копирует данные в пользовательское пространство. Именно на это уходит время. Обычно вы можете прервать процессы, запущенные от своего имени, но не процессы ядра.
Дальнейшее чтение:
Возможно, приведенный ниже скрипт — это то, что вам нужно:
#!/bin/bash
# Save the good lines
awk '{if($0 !~ "^sp")print > "result_1" }' < file_1
awk '{if($0 ~ "^sp")print > "result_2" }' < file_2
# Get number of lines in result_1 ( == nl in result_2 )
nl_file=$(wc -l result_1|cut -d' ' -f1)
# Prepare sorting of these files preceded by a number
seq 2 2 $(( ${nl_file} * 2 )) > numbered_file_1
seq 1 2 $(( ${nl_file} * 2 )) > numbered_file_2
# paste content of numbered_file_* and result_* side by side
paste -d ' ' numbered_file_1 result_1 > mergedfiles
paste -d ' ' numbered_file_2 result_2 >> mergedfiles
sort -n mergedfiles | sed 's/^[[:digit:]]\s\+//g'
Предположим, что все строки в файле 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, но я чувствовал, что более важно требовать, чтобы совпадение было привязано к началу -строки -.