Попробуйте следующее:
awk -v cols=9 '{
printf "%s", $0
for (n = NF; n < cols; n++) printf "\t%d", (n % 3 == 0 ? NR : 0)
print ""
}' file
Количество столбцов передается как переменная cols
, поэтому вы можете легко его изменить. Выравнивать выходные данные я не стал.
Для этого можно использовать sed
:
sed 's/ /,/' in > out
Это заменит первый пробел в каждой строке запятой. Если вы хотите изменить файл на месте, вы можете использовать опцию -i
. Синтаксис различается в разных реализациях sed. Для GNU sed это
sed 's/ /,/' -i the.file
Для BSD sed используйте
sed 's/ /,/' -i '' the.file