我想在文件的开头添加以下文本(我想保留输入):
try {
require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'});
} catch (err) {
console.error(err.toString());
}
我知道有一些问题。但我只是不能让它发挥作用。这是我尝试过的事情之一。我尝试了什么:
#!/bin/bash
sed -i '1itry {
require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'});
} catch (err) {
console.error(err.toString());
}' output.json
但比我得到的更多:sed: -e expression #1, char 127: unexpected
}'`
答案 0 :(得分:1)
由于您的文字中存在所有特殊元字符的换行符,您应该避免使用sed
。
您可以使用cat
:
#!/bin/bash
# set your multiline variable
read -rd '' text<<'EOF'
try {
require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'});
} catch (err) {
console.error(err.toString());
}
EOF
# use echo + cat to print variable before file content and redirect
echo "$text" | cat - output.json > $$.tmp && mv $$.tmp output.json
答案 1 :(得分:1)
要插入多行字符串,请尝试添加除最后一个之外的尾随sed -i '1i \
try { \
require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'}); \
} catch (err) { \
console.error(err.toString()); \
}
' output.json
:
{{1}}
答案 2 :(得分:1)
这可能适合你(GNU sed和bash);
cat <<\! | sed -i '1ecat' file
try {
require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'});
}
catch (err) {
console.error(err.toString());
}
!
将所需的行放在here-document中,并使用evaluate命令将其捕获到文件的开头
答案 3 :(得分:0)
这应该有效:
sed -i '1 i\try { require('/opt/dynatrace-oneagent-6.5/agent/bin/any/onenodeloader.js')({server: 'http://test:8042', agentName: 'test'});} catch (err) { console.error(err.toString());}'
我猜我失踪了。