
例えば
find ./ -name file_name -exec grep -B 2 "earth" {} \; -print | grep "moon"
というコマンドを実施し、出力が
planetkind moon
だったとします。
このfile_nameファイルの一部にある
『 planetkind moon』
という箇所を
『 planetkind taiyo』
に変更したいのですが、
find ./ -name file_name -exec grep -B 2 "earth" {} \; -print | grep "moon" | xargs sed -i "s/moon/taiyo/"
とすると、ファイル中の全てのmoonがtaiyoになってしましまいます。
このgrepでの抽出箇所のみ置換して元ファイルを上書きする方法は有りますか?
以上、宜しくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> このgrepでの抽出箇所のみ置換して元ファイルを上書きする方法は有りますか?
ありそうですね。
grepで行番号を出力、sedで行番号も指定して置換など。
grep -B 2 "earth" | head -1
235-moon
grep -B 2 "earth" | head -1 | grep moon | sed s/-.*$//
235
sed -i 235s/moon/taiyo/
こんな感じの流れにできれば良いのでしょうけど。
質問に書かれているのはfindで一つのファイルからしか見つからない前提で良いのでしょうか。
違うとしたら、grepにファイル名も出力させて処理してやる必要がありそうに感じました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepでの抽出箇所のみ置換して...
-
HP-UXのメモリ搭載量を確認する...
-
UNIX コマンドにおける # や円...
-
Linux のシェルスクリプトの強...
-
ファイル名一覧の印刷
-
スクリプトのエラー「unexpecte...
-
IPアドレスだとPingが通るのに...
-
net use /d の強制実行
-
SONYの音楽ソフト「x-アプリ」...
-
「環境変数名の編集」ウィンド...
-
bashでシングルクォート内の変...
-
PowerShellのスクリプト実行に...
-
LD_LIBRARY_PATHって?
-
Dirコマンドでフォルダ内ファイ...
-
pingは正常なのにtracerouteで...
-
シェルスクリプト実行で”そのよ...
-
compressコマンドってなくなっ...
-
ラズパイで『’test.service’をs...
-
cshでエラー出力を出さないよう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで全角文字の行を抽出
-
sedによる置換 置換ができない。
-
grepで日付指定してlogを取り出...
-
grepでの抽出箇所のみ置換して...
-
awkのフィールド数制限について...
-
nawkの使い方について
-
grepで検索文字列が完全一致し...
-
【シェルスクリプト】awkの結果...
-
コマンドの出力結果をn行おきに...
-
awkを用いて、特定の文字を含む...
-
テキストファイルの間引き削除...
-
sed で \\ を含む文字列に置換
-
ファイルをある文字列で分割し...
-
grepでの日本語検索
-
シェルスクリプトでmd5sum
-
Linuxについて2つ質問したいで...
-
bashなどのシェル変数の値に改...
-
変数をループ内で変更しループ...
-
bashのif文複数条件について
おすすめ情報