2017-03-24 14 views
1

ファイルの開始に特殊文字が(私は入っておきたい)が含まれたテキストを追加する方法:入り、私はファイルの先頭に次のテキストを追加したい

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

堅牢な方法は、ファイル内のテキストを保存し、 'r'コマンドを使用するようになり、ファイルの先頭に猫にそれを評価するコマンドを使用します。 – Sundeep

+0

私はsedを '' 'で始める問題があると思うので、文字列は次の' 'に行くので、requireの後で' ''を使用してください。 – WasteD

答えて

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 
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());}' 

私は私の\が行方不明になったと思います。

+0

私は試しましたが、私の場合はうまくいかないようです。重要なことを知っている私は私の入力を(1行にすべてではない) – DenCowboy

+0

私はそれが動作します。私はそれがオペレーティングシステムとバージョンとは何かを持っていると思います。 – JFS31

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

これはうまくいくかもしれませんあなたのために(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()); 
} 
! 

ヒアドキュメントで必要な行を入れて

関連する問題