Как добавить несколько строк в файл без последней новой строки?

awk 'FNR==NR{if(m<NF)m=NF;next}{for(i=NF;i<m;i++)$(i+1)="N/A"}1' tiny.txt tiny.txt

Отметьте входное имя файла, указанное дважды.

6
14.01.2014, 14:35
2 ответа

<< всегда включает запаздывающую новую строку (за исключением пустого здесь документ).

Необходимо было бы сделать также:

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
4
27.01.2020, 20:29

Используйте echo с переключателем -n:

 echo -n "blah blah" >> file
1
27.01.2020, 20:29

Теги

Похожие вопросы