Awk - объединить две строковые переменные и назначить третью
В awk у меня есть 2 поля: $1 и $2.
Это обе строки, которые я хочу объединить и назначить переменной.
Ответы
Ответ 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.