#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 дальше.