awk + установить переменную внутри awk

Вам необходимо настроить сценарии сборки так, чтобы объектные файлы для разных архитектур записывались в разные каталоги. Естественно, не будет конфликтов между объектами Windows и объектами Unix, поскольку они используют разные имена файлов ( *. Obj и *. Exe vs. *. O и * ), но системы Unix используют те же имена файлов.

Как вариант, распакуйте исходные коды в разные каталоги для каждой сборки.

Что касается библиотек, вам необходимо установить 32-разрядные (…: i386 ) пакеты разработки вместе с собственными 64-разрядными. В качестве альтернативы, настроить 32-разрядную установку в chroot , которая использует несколько ГБ дискового пространства, но требует минимального обслуживания и является самым простым способом надежного создания пакетов для других дистрибутивов, кроме того, который вы используете. Бег.

0
24.04.2018, 14:55
2 ответа

Хотите что-то подобное?

function get_column
{ 
    awk -v val=$1 '{print $val}' list.txt
}

Выше возвращается соответствие столбца с передачей $1в функцию. если вам действительно нужно напечатать совпадение строки с номером строки в $1из функции, вместо этого используйте ниже.

function get_row
{ 
    awk -v val=$1 'NR==val{print ; exit}' list.txt
}

Или пусть оболочка оценит и установит значение valи напечатает его в awkследующим образом:

function get_column
{ 
    awk '{print $val}' val=$1 list.txt
}
function get_row
{ 
    awk 'NR==val{print ; exit}' val=$1 list.txt
}

Здесь вы передаете valтолько числа и , если valсодержит обратную косую черту escape-символ, вы столкнетесь с проблемой , которая awkвыполняет обработку escape-последовательности C на значения, переданные через -v val=, и переменная оболочки с val="\\n"изменятся на значение с \nс помощью awk .

8
28.01.2020, 02:14

Вы можете использовать:

field=$1 awk '{print $ENVIRON["field"]}'

он работает во всех POSIX-совместимых системах, и вам не нужно беспокоиться о внедрении кода при использовании-v val=

Также функция должна называться get_columnвместо get_row.

6
28.01.2020, 02:14

Теги

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