2017-09-25 8 views
0

私は、ファイル内の私の最初の行の後に、このブロックを追加しようとしています:sedで行を追加できませんか?

sed -i '1a\ 
apply plugin: 'io.fabric' \ 
repositories { \ 
    maven { \ 
    url 'https://maven.fabric.io/public' \ 
    } \ 
}' test.txt; 

しかしinterminal実行している上、私はエラーを取得:

はsedの:-e式#1を、CHAR 108:予期しません`}」

+0

一重引用符で囲まれた一重引用符を使用する問題以外に、他の問題も同様に発生する可能性があります。ファイルに追加する行を置いて、 'sed 'を使用することをお勧めします。1r lines.txt' test.txt 'これはすべての場合に堅牢なソリューションとなるでしょう... – Sundeep

+2

最後のバックスラッシュの後ろのスペースを削除して問題を解決します。 – CWLiu

答えて

1

あなたは、単一の現状内の単一引用符を含めている2つのこと、

  • それは望ましくない結果をもたらすでしょう。文字列内で二重引用符を使用するか、一重引用符を適切に引用符で囲みます。

  • 行末には、\の後には何も入力しないでください。我々のようなものを書くことができ

sed "1a \\ 
apply plugin: 'io.fabric' \\ 
repositories { \\ 
    maven { \\ 
    url 'https://maven.fabric.io/public' \\ 
    } \\ 
}" input 

我々は、二重引用符を使用しているとして、ここでは\\が必要です。

+0

-iと連携しています。 –

+0

@ User101入力ファイルの誤った編集を防ぐために '-i'を省略しました。 – nu11p01n73R

+0

'' /一重引用符で囲まれた一重引用符を含めれば、望ましくない結果になります。/一重引用符で囲むことはできません/ 'と' /を使用するか、一重引用符を正しく引用するか、シェルで一重引用符を指定してから、一重引用符/ 'をつけてスクリプトを再入力してください。私が想定していた '' foo '\' 'bar''は、スクリプト内で引用符をエスケープしていません。シェルで一重引用符をエスケープしてスクリプトを再入力します。 –

関連する問題