[解決済み] Bashコマンドからテキストファイルの内部を検索・置換する
2022-03-15 11:26:41
質問
与えられた入力文字列に対して検索と置換を行う最も簡単な方法は何ですか?
abc
で置き換え、別の文字列、例えば
XYZ
ファイル内の
/tmp/file.txt
?
私はアプリを書いていて、IronPythonを使ってSSH経由でコマンドを実行しています - しかし、私はUnixをそれほどよく知らないので、何を探せばいいのかわかりません。
Bashは、コマンドラインインターフェイスであると同時に、非常に強力なスクリプト言語であると聞いています。もしそれが本当なら、このようなアクションを実行することができるのでしょうね。
bashでできるのか、また、目的を達成するための最もシンプルな(1行の)スクリプトは何ですか?
どのように解決するのですか?
最も簡単な方法は、sed(またはperl)を使用することです。
sed -i -e 's/abc/XYZ/g' /tmp/file.txt
のため、インプレース編集を行うためにsedを起動します。
-i
オプションで指定します。 これは、bashから呼び出すことができます。
どうしてもbashだけで済ませたい場合は、以下のようにするとうまくいくでしょう。
while IFS='' read -r a; do
echo "${a//abc/XYZ}"
done < /tmp/file.txt > /tmp/file.txt.t
mv /tmp/file.txt{.t,}
これは各行をループして置換を行い、一時ファイルに書き出すものです (入力を破壊したくないので)。 最後のmoveはtemporaryを元の名前に移動させるだけです。(堅牢性とセキュリティの観点から、一時ファイル名は静的であったり予測可能であってはなりませんが、ここでは割愛します)。
Macユーザーの方へ。
sed -i '' 's/abc/XYZ/g' /tmp/file.txt
(理由は下のコメント参照)
関連
-
[解決済み] IPアドレスのまとめ方
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み】if [](角括弧)の「[: 引数が多すぎる」エラーの意味)
-
[解決済み] bash : cd : 引数が多すぎる [閉店].
-
[解決済み] Cp: ターゲットはディレクトリではありません
-
[解決済み] 値がベースに対して大きすぎる(エラートークンは "08")[重複]
-
[解決済み] cshスクリプトをbashでソースして環境を設定する方法 [終了しました]。
-
[解決済み] bashで::演算子は何をするのですか?
-
[解決済み] 絶対パスと論理パスの違い
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] Bashのforeachループ