
例えば
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ランキング
-
grepで全角文字の行を抽出
-
SONYの音楽ソフト「x-アプリ」...
-
ファイル名についている「-」と...
-
Dirコマンドでフォルダ内ファイ...
-
コマンドプロンプトにおけるコ...
-
Linux のシェルスクリプトの強...
-
sudoで実行したコマンドの実行...
-
スクリプトのエラー「unexpecte...
-
bashでシングルクォート内の変...
-
Docker環境は以下通りです。doc...
-
python IDLEで訂正、削除のやり...
-
Linuxのファイルの行き先について
-
TeraTermで操作する際の設定に...
-
viエディタが起動しない
-
画面の文字をさかのぼってみる...
-
Windowsのローカルディレクトリ...
-
ログインシェルについて
-
batである文字列内に特定の文字...
-
gnome-terminalの使い方教えて...
-
党首討論を見てます。 この石破...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで全角文字の行を抽出
-
grepで日付指定してlogを取り出...
-
grepで検索文字列が完全一致し...
-
LINUXで半角の英数字以外の文字...
-
sed で \\ を含む文字列に置換
-
bashでブランク(空白)を検索文...
-
zshの文字列置換機能
-
特定文字列間の文字列の抽出の...
-
grepでの抽出箇所のみ置換して...
-
sedコマンドで範囲指定しての部...
-
awkとsedはセットで覚えたほう...
-
grepで変数が使えない
-
grepでの日本語検索
-
awkのフィールド数制限について...
-
bashなどのシェル変数の値に改...
-
【シェルスクリプト】awkの結果...
-
表示桁数をそろえた文字列を変...
-
特定文字列を除外する方法(gre...
-
ファイルをある文字列で分割し...
おすすめ情報