awk 'FNR==NR{if(m<NF)m=NF;next}{for(i=NF;i<m;i++)$(i+1)="N/A"}1' tiny.txt tiny.txt
Отметьте входное имя файла, указанное дважды.
<<
всегда включает запаздывающую новую строку (за исключением пустого здесь документ).
Необходимо было бы сделать также:
printf %s 'echo "bla bla"
ifcon' >> file
Или используйте команду, которая удаляет запаздывающий символ новой строки вместо cat
:
awk '{printf "%s", l $0; l=RT}' << EOF >> file
echo "blah bla"
ifcon
EOF
(Или perl -pe'chomp if eof'
)
Или, где здесь-документы реализованы с временными файлами (bash
, zsh
, pdksh
, AT&T ksh
, Граница, нет mksh
, dash
ни yash
), в системах GNU/Linux Вы могли сделать:
{
chmod u+w /dev/stdin && # only needed in bash 5+
truncate -s-1 /dev/stdin &&
cat
} << EOF >> file
echo "blah bla"
ifcon
EOF