Найти минимальное значение в столбце из множества файлов и вывести в другой файл

gnome-shell действительно начинается Xwaylandс подключения к журналу. Сообщения отображаются в журнале с префиксом вроде org.gnome.Shell.desktop[3494]:, где 3494 — это PID процесса gnome -shell .

См. « Что означает «org.gnome.Shell.desktop[1711] :» в журнале systemd? '.

Это может сбивать с толку, потому что gnome-shellведет журнал одним и тем же способом и может быть очень шумным; тогда как Xwayland может быть очень тихим. Я вижу, что Xwayland не регистрирует никаких сообщений о запуске. Я вижу только сообщения об ошибках.

Вы можете попробовать поискать сообщения Xwayland с подвохом по строкам

$ journalctl --since=-1month  | grep ': [(]..[)] ' | grep -v gdm-x-session

или

$ journalctl --since=-1month \
    | grep -E '[(]([^0-9^a-z]){2}[)]' \
    | grep -v gdm-x-session

Mar 18 21:15:45 alan-laptop org.gnome.Shell.desktopPATH: (EE) failed to read Wayland events: Connection reset by peer
Mar 18 21:48:01 alan-laptop org.gnome.Shell.desktop[3012]: (EE) failed to read Wayland events: Broken pipe
Mar 18 21:50:06 alan-laptop org.gnome.Shell.desktop[2124]: (EE) failed to read Wayland events: Connection reset by peer
Mar 19 11:03:43 alan-laptop org.gnome.Shell.desktop[29640]: (EE) failed to read Wayland events: Broken pipe

-1
13.03.2020, 17:43
4 ответа

А sedверсия

find. -name "file*" -exec sh -c '
   echo $(sort -nk1 "$1"  | sed -n "1{s/.*//p}" )" (from "${1##*/}")" ' sh {} \; | sort -nk1 > output.txt; cat output.txt

sortпри необходимости заполнение выходного файла и добавление имен файлов

0
28.04.2021, 23:20

IIUC, вы хотите, чтобы это было в каждом файле:

awk 'NF' FILE | sort -n -k1 - | awk 'NR==1{print $1}' >> file_NEW

Начальный awk 'NF' FILEнужен, если у вас был пустой бланк строки во входных файлах. Вы не указали, хотите ли вы запустить эту команду для всех файлов в данный каталог рекурсивно или не -рекурсивно или только в некоторых файлах с определенными образцами в их именах. В любом случае, вы можете использовать findдля сделай это:

find. -name "FILE*" -exec sh -c 'awk "NF" FILE | sort -n -k1 - | awk "NR==1{print \$1}" >> file_NEW' sh {} \;

В этом случае приведенная выше команда выполняется для всех файлов в заданном каталог, имя которого начинается с FILE.

Также обратите внимание, что это не обязательно даст вам отсортированный список в вывод file_NEW, потому что findбудет слепо запускать все после -execв каждом найденном файле.

0
28.04.2021, 23:20

Чтобы найти минимальное значение, мы можем использовать следующую команду

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

awk 'NR==1{sum=$1}($1 < sum){sum=$1}END{print sum}'  filename >> outputfile

Проверено, работает нормально

2
28.04.2021, 23:20
awk '{print $1 "\t(from " FILENAME ")"}' file* | sort -k1,1n | awk -F'\t' '!seen[$2]++'

Описанное выше будет надежно и эффективно работать со всеми вашими входными файлами одновременно с использованием стандартных инструментов UNIX, например.:

$ cat file1
25       104.601  0.5
24.8488  104      0.5
24.5341  103      0.5
24.1844  102      0.5
24.1568  101      0.5
24.1568  100      0.5
24.1844  99       0.5
24.5341  98       0.5

$ cat file2
75       104.601  0.5
74.8488  104      0.5
74.5341  103      0.5
74.1844  102      0.5
74.1568  101      0.5
74.1568  100      0.5
74.1844  99       0.5
74.5341  98       0.5

$ awk '{print $1 "\t(from " FILENAME ")"}' file{1,2} | sort -k1,1n | awk -F'\t' '!seen[$2]++'
24.1568 (from file1)
74.1568 (from file2)

, но предполагается, что ни одно из имен ваших файлов не содержит символов табуляции или новой строки. Если они содержат вкладки, их можно легко настроить :

.
awk '{print $1 "\t(from " FILENAME ")"}' file* |
sort -k1,1n |
awk '{f=$0; sub(/[^\t]*\t/,"",f)} !seen[f]++'

но если они также содержат символы новой строки, вам понадобятся инструменты GNU для размещения\0(NUL )терминаторов:

awk -v ORS='\0' '{print $1 "\t(from " FILENAME ")"}' file* |
sort -z -k1,1n |
awk -v RS='\0' '{f=$0; sub(/[^\t]*\t/,"",f)} !seen[f]++'
1
28.04.2021, 23:20

Теги

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