![sedはファイルの単語を他のファイルの内容に置き換えますか? [コピー]](https://linux33.com/image/47506/sed%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%8D%98%E8%AA%9E%E3%82%92%E4%BB%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AB%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
2つのファイルfile1
&file2
。
ファイル1の内容:
Text1
Text2
Text3
ファイル2の内容:
Sample1
Sample2
Sample3
file1
Text1の「from」という単語をcontentに置き換えたいと思いますfile2
。次のコマンドを試しました。
sed -i 's/Text1/r file2/g' file1
sed -e 's/Text1/`cat file1`/' < file2
どちらも機能しません。私は何を見逃していますか?
答え1
全体の背骨ではなく1つだけ交換したい場合は、word
いくつかのトリックを使用する必要があります。
sed "s/100/$(cat -E file2 |tr -d '\n')/;s/\\$/\n/g" file1
または
sed -e s/100/$(tr \\n $ < file2)/ -e s/\\$/\\n/g file1
主なアイデアsed
はひもエディタなので、複数行の文字列を受け入れることはできません(つまり、改行文字を含む)ほとんどの場合。ヒントは、置き換えられるファイルから改行文字を削除して置き換えてから再挿入することです。
答え2
file1 を file2 の内容に置き換える場合は、次のいずれかが機能します。
cat file2 > file1
cp file2 file1