Использование gawk для добавления значения, разделенного запятой

#shell #awk

#оболочка #awk

Вопрос:

У меня есть текстовый файл, который выглядит следующим образом.

 this-is-name-1
this-is-name-2
...
  

Я пытаюсь добавить a ,0 в конец определенной строки, используя gawk,
gawk -i inplace -v n=',0' -v s='this-is-name-1' '$1 == s { $2 = n } 1' file
Но, как вы можете видеть, между ними есть пробел.

 this-is-name-1 ,0
this-is-name-2
...
  

Какой правильный синтаксис gawk, чтобы в нем не было пробела, поэтому вместо этого он выглядит так

 this-is-name-1,0
this-is-name-2
...
  

Ответ №1:

Используйте запятую в качестве разделителя выходных полей:

 gawk -i inplace -v OFS=',' -v n='0' -v s='this-is-name-1' '$1 == s { $2 = n } 1' file
# ..............^^^^^^^^^^.......^ (no comma here)
  

Ответ №2:

Измените $2 = n на $0 = $0 n . Ваш текущий код добавляет 2-е поле, поэтому awk должен добавить разделитель между полями.