AWK конкатенация строк

#awk

#awk

Вопрос:

У меня есть тестовый файл со следующим содержимым:

 k1:v1
 

Я хотел бы получить v1 и объединить со строкой a , используя команду AWK ниже:

cat test.txt | grep k1 | awk -F: '{print $2"a"}'

Ожидаемый результат v1a , но я получил a1 . Если я конкатенирую с aa , то я получил aa . Похоже, что он перезаписывает строку v1 с самого начала. Я долгое время занимался отладкой, я не вижу никаких причин для этого.

Комментарии:

1. Я не смог воспроизвести это, для меня это работает… Это точная строка?

Ответ №1:

Основываясь на ваших показанных примерах, не могли бы вы попробовать следующее. Мы могли бы сделать это в одном awk самом нам не нужно использовать grep и cat с ним. Просто сделайте разделитель полей as : и проверьте условие, если строка начинается с K1 , а затем выведите 2-е поле вместе со строкой a .

 awk -F':' '/^k1/{print $2"a"}' Input_file
 

Комментарии:

1. Проверьте cat -v Input_file , есть ли в вашем файле контрольные M символов, если да; затем попробуйте awk -F':' '{gsub(/r/,"")} /^k1/{print $2"a"}' Input_file удалить их, а затем обработать команду awk дальше.