Подтвердить что ты не робот

Awk - объединить две строковые переменные и назначить третью

В awk у меня есть 2 поля: $1 и $2.

Это обе строки, которые я хочу объединить и назначить переменной.

4b9b3361

Ответ 1

Вы можете сказать:

awk '{b=$1$2; print b}' file

Если вы хотите иметь промежуток между ними, выполните:

awk '{b=$1" "$2; print b}' file

На самом деле это то же самое, что и для использования FS, поскольку по умолчанию оно занимает пространство:

awk '{b=$1 FS $2; print b}' file

Test

$ cat a
hello how are you
i am fine
$ awk '{b=$1$2; print b}' a
hellohow
iam
$ awk '{b=$1 FS $2; print b}' a
hello how
i am

Вы можете играть с ним в идеоне: http://ideone.com/4u2Aip

Ответ 2

Конкатенация строк в awk может быть выполнена командой печати, и вы можете сделать сложную комбинацию. Здесь я пытался изменить 16 char на A и использованную конкатенацию строк:

echo CTCTCTGAAATCACTGAGCAGGAGAAAGATT | awk -v w=15 -v BA=A '{OFS=""; print substr($0, 1, w), BA, substr($0,w+2)}'
Output: CTCTCTGAAATCACTAAGCAGGAGAAAGATT

Я использовал функцию substr для извлечения части входа (STDIN). Я передал некоторые внешние параметры (здесь я использую жестко заданные значения), которые обычно являются переменными оболочки. В контексте программирования оболочки вы можете написать -v w = $width -v BA = $my_charval. Ключом является OFS, который обозначает выделение выходного поля в awk. Функция печати принимает список значений и записывает их в STDOUT и приклеивает их к OFS. Это аналогично функции соединения perl.