LINUX.ORG.RU

[странное]awk и обработка отдельных полей

 


0

0

Добрый день.

Имеется файл с числами в столбцах. Нужно обработать эти числа, предположим, из второго столбца вычесть первый. Или ещё какую-нибудь операцию выполнить с помощью let.

К примеру, хочется, чтобы сработало что-то навроде:

awk '{print $(let "$2-$1")}'

Как такое сделать?


Ответ на: комментарий от gavv

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

HolyBoy
() автор топика
Ответ на: комментарий от gavv

Пример таких чисел:

10110110000001010011111000 1000100010011011101110101100
10110110000001010011111001 1000100010011011101110101001

И с ними может понадобиться сделать всё, что умеет команда let. В том и сложность.

А может ещё и sed'ом захочется, скажем, обработать $1 и $2. Или ещё что-то, скажем, для $1 воспользоваться ccze, для $2 — bc.

В общем, никак не пойму, как в среде awk использовать внешние команды для обработки данных, если это возможно.

HolyBoy
() автор топика
Ответ на: комментарий от HolyBoy

просто сгенерируй с помощью awk текст программы для последующей утилиты.

например:

echo 242352453453465645464 5675678587686786876866 | awk '{ printf "{ %d * %d }\n",$1,$2 }' | bc -l

dilmah ★★★★★
()
Ответ на: комментарий от gavv

а let - примитив шела, соотв. инкрементировать переменную awk-а им не получится

gavv
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.