добавить вывод текстового файла в начало другого файла

alias rm="mv -t /root/folder" сделает это, если у вас есть mv, который поддерживает нестандартную опцию -t. См. mv (1)для получения дополнительных опций (вы, вероятно, также захотите --no-clobber/ --interactive).

Если вам нужно решение POSIX, вы можете полностью обойти базовоеrm(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html#top)с помощью функции с именемrm:

rm() {  mv "$@" /root/folder;  } # a start

0
26.09.2019, 21:40
1 ответ

Если говорить конкретно о том, почему ваш синтаксис sedне работает, подстановка процесса не будет происходить внутри одинарных кавычек.

Этот синтаксис работает для меня:

sed -i.old "1s;^;$(cat random)\\
;" filename

Если вы используете GNU sed, это также будет работать:

sed -i.old "1s;^;$(cat random)\n;" filename

Обращаясь к вашему редактированию и сосредотачиваясь на GNU sed, на ум приходят два решения:

1 )избегайте синтаксиса внутри random, который беспокоит sed. В вашем конкретном случае это использование буквальной новой строки внутри файла.

Вместо:

/* line1 
   line2 */

Код новой строки (в конце строки 1 )как\n:

/* line1\n   line2 */

Последняя новая строка вrandom(в конце строки 2 )— это , уже закодированная как \nв командной строке sed.

2 )отказаться от редактирования места -с помощью sedи использовать подход «cat- и -mv»:

for f in filename; do
    mv $f $f.old
    cat random $f.old > $f
done
1
28.01.2020, 02:39

Теги

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