2017-05-04 6 views
0

matteo_test.shという名前のファイルがあり、文字列は/nettools/python_64です。 この文字列を/nettools/python_release/python278/に置き換えます。文字列をsedに置き換えてもファイルは保存されていません

私は、次の操作を行います。

original_str='/nettools/python_64' 
replace_str='/nettools/python_release/python278/' 
sed "s~$original_str~$replace_str~" matteo_test.sh 

私は、コマンドラインは私にファイルmatteo_test.shの全体の内容を出力することを実行し

。この出力されたコンテンツの下で、文字列が正しく置き換えられたことがわかります。

ただし、ファイルを再オープンすると古い文字列が表示されるため、ファイル自体の内容は変更されていません。

sedコマンドを実行すると、ファイル自体に置き換えずに、ファイルの内容全体を含む文字列に置き換えられます。

私はUnixシェルの専門家ではないので、私はおそらく非常に単純な点を欠いているでしょう:誰でも私が間違っていることを理解するのを助けることができますか?

私の目的は、その文字列をファイルに置き換えることです。

+0

'sed -i'を使ってファイル内のコンテンツを更新してください。 – Kalanidhi

+0

@Kalanidhiはありがとうございます。私はそれを受け入れupvoteので、それを答えとして書いてください。 –

答えて

0

あなたがsed -i.bakを使用してファイルを既存のとバックアップを取りたい場合は、バックアップ
man sed

-i[SUFFIX], --in-place[=SUFFIX] 

       edit files in place (makes backup if extension supplied) 

参照してください

ターミナル

で出力を印刷するのではなく、ファイルの内容を保存するためにsed -iを試してみてください。

例:

sed -i.bak 's/search/patter/' file_name.txt 

file_name.txtコンテンツが更新されたコンテンツに変更されますが、それでもあなたは、古いコンテンツを持っているfile_name.txt.bak

注:
任意のquestingを投稿する前に、検索してくださいその質問に関連するgoogleページを読んで、manページを読んで、あなたの時間を節約することができます。

関連する問題