Как добавить # Shebang в первую строку файла, который является сценарием автоматического создания другой программой

Я ищу способ добавить shebang #!/ Bin/csh -f в первую строку моего файла, который фактически создается другим набором программ, так как этот сценарий создается автоматически, он должен запускаться из bash, когда пользователь нажимает какую-то кнопку в моем инструменте. Я пытался использовать sed, но это не сработало.

sed ' 1 s/.*/\#!/bin/csh -f/' filename.

и awk

awk 'NR==1{printf "%s %s\n", $0, "#!/bin/csh -f"}' filename

обе эти команды возвращают следующее

/bin/csh is not an event.

Пожалуйста, предложите лучший метод.

Дэн

2 ответа

Awk альтернативы

awk 'BEGIN{print "#!/bin/csh -f"} {print}' filename > out.sh

awk 'NR==1{print "#!/bin/csh -f"};{print}' filename > out.sh 

Вариант Xen2050 для изменения файла внутри вместо перенаправления его в out.sh

 sed -i '1 i\#\!\/bin\/csh -f' filename

Попробуйте убежать от ! характер, используя \! вместо простого !, должен дать лучшие результаты. Так что постарайтесь:

sed '1 i\#\!\/bin\/csh -f' filename > out.txt
Другие вопросы по тегам