sedコマンドを使用して、あるファイルから別のファイルにテキストを挿入する正しい方法を知りたいですか? [コピー]

sedコマンドを使用して、あるファイルから別のファイルにテキストを挿入する正しい方法を知りたいですか? [コピー]

このサイトの表示中にいくつかの問題が原因です。私は "<"の代わりに "{"を使用します。

これは私のsedコマンドです。

sed 's/{head/*backbutton_and_scroller_script.txt*{head/' report.usc20.txt

「report.usc20.txt」ファイルのheadタグの前に、「backbutton_and_scroller_script.txt」内のテキスト情報を挿入したいと思います。 sedコマンドでbackbutton_and_scroller_script.txtファイルを正しく指す方法は?私の現在のコードはファイル名を表示します戻るボタン_and_scroller_script.txtbackbutton_and_scroller_script.txt のテキストではなく report.usc20.txt の head タグの前。

答え1

sedまず、これがどのように機能するかについていくつかの誤解があるようです。sed「スキーマのこの部分へのファイルのリダイレクト」演算子はありません。リダイレクトできる場合は、パターンがめちゃくちゃにならないように、入力テキストから特殊文字をエスケープする必要があります(ここにはドットやスラッシュなどの文字が含まれるため、一般的な文字ではありません)。そして調整-iオプションファイルを使用する必要がありますsed

これはあなたが聞きたいものではないかもしれませんが、それはsed間違ったツールです。あなたができる最も良いことは、ツールやライブラリを得ることです。明らかこのタイプのマークアップ(例:XSLTまたはPython / Java / Rubyライブラリ)

完全にカスタマイズされた言語を使用している場合は、ひどいハッキングを使用して最初に表示されるまでファイルを読み取ることができます{head

file="$(<report.usc20.txt)"
start="${file%%\{head*}"

、ファイルの残りの部分を取得するには、次のようにします。

end="${file#*\{head}"

最後に、すべての作品を1つにまとめます。

printf '%s%s{head%s' "$start" "$(<backbutton_and_scroller_script.txt)" "$end" > report.usc20.txt

これはテストされておらず、恐ろしいので、適切なプログラミング言語を使用することをお勧めします。

関連情報