[解決済み] OS Xでのsedによるインプレース編集
2022-04-22 06:07:22
質問
OS Xでsedを使ってファイルを編集したいのですが、以下のコマンドを使っています。
sed 's/oldword/newword/' file.txt
端末に出力されます。 ファイル.txt は変更されません。 変更内容は ファイル2.txt をこのコマンドで実行します。
sed 's/oldword/newword/' file1.txt > file2.txt
しかし、私は別のファイルが欲しいわけではありません。 私が編集したいのは ファイル1.txt . どうすればいいのでしょうか?
iフラグを試してみました。 その結果、以下のようなエラーが発生します。
sed: 1: "file1.txt": invalid command code f
解決方法は?
を使用することができます。
-i
フラグに、バックアップされたファイルに追加するサフィックスを指定することで、正しく動作します。あなたの例を拡張します。
sed -i.bu 's/oldword/newword/' file1.txt
この場合、2つのファイルが作成されます。
file1.txt
という名前のもので、これは置換を含んでいます。
file1.txt.bu
は、元のコンテンツを持つ。
軽度の危険
破壊的に元のファイルを上書きしたい場合は、以下のようなものを使用します。
sed -i '' 's/oldword/newword/' file1.txt
^ note the space
行の解析方法の関係で、オプションフラグとその引数の間にスペースが必要です。 引数は長さ0だからです。
この方法でsedを騙すことの危険性は、あなたのオリジナルが壊れる可能性があること以外には、私は認識していません。しかし、もしこの方法で
sed
がスクリプトの一部である場合、Unix Way™ は (IMHO) のように
sed
非破壊で、きれいに終了することをテストし、それから余分なファイルを削除します。
関連
-
[解決済み] mongo コマンドが使えない。mac ではコマンドが見つからないと表示される。
-
[解決済み] MAMPはphp.iniをどこに保存しているのですか?
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] エラー:戻り値の型が異なるだけの関数はオーバーロードできない
-
[解決済み] .ssh/config: "不正な設定オプションです。Mac OS Sierra 10.12.6 で "UseKeychain" が表示される。
-
[解決済み] cmake 既存のソースから Xcode プロジェクトを生成する
-
[解決済み] configure: エラーです。Cコンパイラは実行ファイルを作成できません
-
[解決済み] sedで改行をスペースに置き換えるには?
-
[解決済み] sedがその場でファイルを編集
-
[解決済み】Pythonでディレクトリ内の拡張子.txtのファイルをすべて検索する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルでドッカーイメージが見つからない
-
[解決済み] Virtualbox が errorID=BLKCACHE_IOERR を返す
-
[解決済み] ターミナルで行数を表示しようとすると、"xargs unterminated quote "というエラーが発生する。
-
[解決済み] (Mac) -bash。git_ps1: コマンドが見つかりません。
-
[解決済み] OSX -bash: composer: コマンドが見つかりません。
-
[解決済み] MacVimと通常のVimの違いは何ですか?
-
[解決済み] cmake 既存のソースから Xcode プロジェクトを生成する
-
[解決済み] Gitのパスワードを更新する方法を教えてください。
-
[解決済み] Macで-iオプション付きのsedコマンドは失敗するが、Linuxでは動作する。
-
[解決済み] awk で変更をその場で保存