こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

UNIXでファイルの中身を更新

いつもお世話になっております。UNIXを使用しております。
とあるAAA.confという名のファイル内の任意の行「TEST=-200」を
「TEST=-250」というように更新したいのですが、下記(1)、(2)の
方法でできますでしょうか。どのようなコマンドを使用するとよい
ですか。

(1)更新したい行をピンポイントで上書き更新。
(2)更新したい行の直前までの内容を別ファイルAAA_TOP.confとし、
直後の内容を別ファイルAAA_BOT.confとして作成しておき、更新
処理を行う際に、

(2)-1:AAA_TOP.confを読み込み、新規のAAA.confに書き込む。
(2)-2:「TEST=-250」と書き込む
(2)-3:AAA_BOT.confを読み込み、新規のAAA.confに追記する。

投稿日時 - 2009-08-27 15:56:31

QNo.5241125

すぐに回答ほしいです

質問者が選んだベストアンサー

(1)sed
sed -e "s/TEST=-200/TEST=-250/g" AAA.conf > AAA_new.conf

(2)cat
cat AAA_TOP.conf > AAA.conf ; echo "TEST=-250" >> AAA.conf ; cat AAA_BOT.conf >> AAA.conf

こんな感じでしょうか?

投稿日時 - 2009-08-27 16:54:13

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

(1) は「任意の行」の意味によるな. 「全ての行」なのか「特定の行」なのかで変わってくる.
(2) だと
echo "TEST=-250" | cat AAA_TOP.conf - AAA_BOT.conf > AAA.conf
って方法もあります.

投稿日時 - 2009-08-28 00:44:31

ANo.1

(1)
$ sed '1,$s/TEST=-200/TEST=-250/g' AAA.conf > AAAA.conf; mv AAAA.conf AAA.conf
(2)
$ cat AAA_TOP.conf > AAA.conf; echo TEST=-250 >> AAA.conf; cat AAA_BOT.conf >> AAA.conf

投稿日時 - 2009-08-27 16:50:45

お礼

みなさま、ご丁寧に回答頂きありがとうございました。
おかげさまでできました!

お返事遅くなり大変申し訳ありませんでした。

投稿日時 - 2009-08-31 09:27:40

あなたにオススメの質問