sedを使用してファイルの115行目にこの文字列を含めたいと思います。しかし、常に不明なコマンドについて文句を言います。他の質問で別の解決策に従いましたが、まだ解決していません。
sed '115"<"img src="\.\/index_files\/Logo\.png" width="200" height="160" align="right" border="0">"' index.html > test.html
ありがとうございます!
答え1
命令で"
はないからだ。sed
エラーメッセージが示すように、明確ではありません。
アドレス115
の後にはコマンドが続く必要がありますsed
。i
- その後、一部を削除してください
"
。その周り<
とその後>
- 次にsを脱出しないでください
/
。脱出する必要はありません。 i
その後、コマンドはテキストのみを許可するので、何もエスケープしないでください。
これにより、次のような結果が得られます。sed '115 i <img src="./index_files/Logo.png" width="200" height="160" align="right" border="0">'
答え2
ユーザーリチャードは、コマンドの問題をよく説明し、sed
実行したいことを実行するために必要な正しい編集スクリプトも提供します。
私はさまざまな状況で動作する代替案を提供しました。
このsed
コマンドは、r
データ・ストリームの現在位置にファイルの内容を挿入します。
あなたのsed
コマンドラインできるこのように書かれている
$ sed '115r /dev/stdin' index.html <data.in
sed '115r data.in' index.html
これは、115行目の後に挿入されたデータをファイルに保存したい場合data.in
と同じ効果があります。
/dev/stdin
標準入力を介して送信されたすべての内容を含む特別なファイル。
次のようにすることもできます(「here-strings」をサポートするシェルを使用)。
$ sed '115r /dev/stdin' index.html <<<"my string of stuff"
または
$ sed '115r /dev/stdin' index.html <<<"$myvariableofwonder"
明らかに、これは他のコマンドのパイプでも期待どおりに機能します。
$ sed -n '1,10p' myfile | sed '115r /dev/stdin' index.html
これにより、1〜10行が115行myfile
に移動しますindex.html
。