Получите первый/второй столбец файла

Насколько я знаю, это невозможно. И я думаю, что это гораздо более сложная проблема, чем кажется на первый взгляд, если учесть сложность управления памятью. Может быть, даже сложно четко записать, что значит "отложить в сторону 50 Мб".

Но в Linux есть кое-что, что вполне может решить Вашу проблему гораздо более элегантно:
. Убийца OOM - убийца из памяти - который принимает решение о том, какой процесс убить, если память становится плотной, и просто убивает ее.
Гораздо лучше, чем ждать первой программы, которая не проверяет возвращаемое значение malloc() и перестает работать.

Есть некоторые параметры для настройки ее под свои нужды - см. Как настроить Linux Out-of-Memory Killer.

Частично все усложняет то, что не помогает зарезервировать память для одной программы: чтобы сделать что-то полезное, нужно уметь запускать другие программы - например, kill.

1
24.04.2015, 00:41
1 ответ

Это можно легко сделать с awk :

awk 'NR==FNR { a[$1] = $2; next; } { if ($1 in a) { print $1, a[$1]; } }' firstFile.txt secondFile.txt

Это будет печатать сопоставленные значения и второй столбец из первого файла.
Или вы можете попробовать это:

#!/bin/bash

while IFS=' ' read -r -a arr; do
    while read j; do
        if [ "${arr[0]}" = "$j" ]; then
            echo "${arr[0]} ${arr[1]}"
        fi
    done < secondFile.txt
done < firstFile.txt

, который предполагает первые и второе столбцы в FirstFile.txt разделены пространством, и что SecondFile.txt имеет один столбец.

1
27.01.2020, 23:50

Теги

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