заменить заголовок в файле списком строк в другом файле

Согласно соответствующим сообщениям об ошибках (например, FS#41728 - [systemd] coredumps, 100% cpu usage, X hanging и systemd-coredump 100% CPU usage), дампы ядра в Linux инициируются в ядре, и оно копирует данные в пользовательское пространство. Именно на это уходит время. Обычно вы можете прервать процессы, запущенные от своего имени, но не процессы ядра.

Дальнейшее чтение:

1
11.05.2019, 00:24
2 ответа

Возможно, приведенный ниже скрипт — это то, что вам нужно:

#!/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'
0
28.01.2020, 00:12

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

0
28.01.2020, 00:12

Теги

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