• 締切済み

Linux ファイルの中に文字列を挿入したい

たとえば下記のように変更前→変更後(★の部分追加)にしたいです。 コマンドでなんとかしたいのですが、 sedでも検索行の下の行に挿入するしかできない?気がします。 もっともやりたいことは、 (1)echo -n "Test user dayo:"とその下の (2) echoを検索で引っかけて、 その(2)の下の行(★のところ)に追加できれば最高ですが、sed自体2行は無理だと思うので、 (1)を検索して、そのの二つ下の行(★のところ)に挿入できればと考えています。 変更前++++++++++++++++++++++++++++ echo -n "Test user dayo:" echo ;; stopdayo) ++++++++++++++++++++++++++++ 変更後++++++++++++++++++++++++++++ echo -n "Test user dayo:" echo ★kokoniiretaiyo ★kokoniiretaiyo2 ;; stopdayo) ++++++++++++++++++++++++++++

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

> sedでも検索行の下の行に挿入するしかできない?気がします。 いや、そんなことないでしょ? 前でも後でも > 1)echo -n "Test user dayo:"とその下の (2) echoを検索で引っかけて、 > その(2)の下の行(★のところ)に追加できれば最高ですが、sed自体2行は無理だと思う このまま素直に追加でいいなら多分 sed '/^echo -n "Test user dayo:"$/{n;/^echo$/a\ ★kokoniiretaiyo\ ★kokoniiretaiyo2 }' file

関連するQ&A

  • 多数のファイルに決まった文字列を挿入

    お世話になります。 多数あるファイルに、下記のルールで「#coding: euc-jp」という文字列を挿入したいと考えています。 ルール: ・「#!」で始まる行は読み飛ばし、「#!」ではないで始まる行が現れたら、その行の前に挿入する。 ・「#!」ではないで始まる行が存在しない場合は、ファイルの末尾に挿入する。 プログラムを書けばできるのでしょうが、なるべく sed や perl コマンド等で簡単にできる方法を考えています。 できれば、バックアップファイルは取得せず、変更前後でパーミッションが保持されればと考えています。(sed -i, perl -iのように) よろしくお願いいたします。

  • シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入

    こんにちは。 シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入したいと思います。 ・sample.txt (挿入前) -- <ABC> <ABC> Hello! </ABC> </ABC> -- ↓ ・sample.txt (挿入後) -- <ABC> <ABC> Hello! </ABC> Good Morning Good Evening </ABC> -- 上記のように、テキスト末尾から検索して、 はじめて表れた"</ABC>"のタグの前に、 Good Morning Good Evening という2行の文字列(無理なら1行でも)を追加したいと考えています。 "</ABC>"タグは2つありますが、末尾から検索して初めて表れたもののみ対象です。 このような操作を行うには、 どのようにシェルを組み合わせれば良いのでしょうか? grepやsedを用いて考えてはいますが、よく分かりません。 (grepで末尾から初めて表れた"</ABC>"の行番号を取得し、 その上に、sedで文字列を挿入するなどですが・・・よく分かりません) どなたか、よろしくお願いします。

  • 先頭から8文字目に1文字挿入したい

    シェルスクリプトで文章の整形をしています。 行の先頭から8文字目にスペースを挿入する方法を教えてください。 ウェブで検索したところsedコマンドでできるようですが、 シェルは初心者でなかなか読み解くことができず おもったようにできませんでした。 シェルはbashです。 よろしくお願いいたします。

  • linuxコマンドでファイル操作

    linuxなどのターミナル上で、ファイル内部をコマンドで編集したいのですが できますでしょうか。 例をあげますと、 hoge.shというスクリプトファイルに、 ... ... echo "/home/user001/hoge/" ... のような内容のものがあった時に、 echo "/home/user001/hoge/" の部分だけを、 echo "/home/user002/hoge/" に変更したいのです。エディタで編集すれば良いのでしょうが、 量が多く、スクリプト可したいと考えています。 もし、コマンドラインからこのような簡単な変更ができるものがあれば 教えて頂けないでしょうか。

  • linuxコマンドでファイル操作

    linuxなどのターミナル上で、ファイル内部をコマンドで編集したいのですが できますでしょうか。 例をあげますと、 hoge.shというスクリプトファイルに、 ... ... echo \"/home/user001/hoge/\" ... のような内容のものがあった時に、 echo \"/home/user001/hoge/\" の部分だけを、 echo \"/home/user002/hoge/\" に変更したいのです。エディタで編集すれば良いのでしょうが、 量が多く、スクリプト可したいと考えています。 もし、コマンドラインからこのような簡単な変更ができるものがあれば 教えて頂けないでしょうか。

  • シェルで文字列に文字を挿入する方法

    cat test.txtのような、コマンドの結果が次のようなとき、「(」の前に「=」を挿入したいのですが、正規表現で置き換えるしか方法はないんでしょうか? Array('3' '7' '9' '11'); 宜しくお願い致します。

  • sedコマンド 先頭に空白文字を含む行の挿入

    よろしくお願いします。 [やりたい事] linaxサーバで、行の先頭に空白を3個含む文字列aaaを、/tmp/abc.cnfの3行目に挿入したいですが下記[実施コマンド]ではうまくいかず、上手くいくコマンドラインを教えて下さい。 [実施コマンド] sed -e ”3i <space><space><space>aaa” /tmp/abc.cnf [/tmp/abc.cnf]の中身 △△△123 △△△456 △△△aaa ←コマンドで挿入したい △△△666 △△△777 よろしくお願いします

  • cmd 検索対象の行と、そのn段下(もしくは上)までの行を合わせて出力したい

    win 2000 xp vista を使用します。 コマンドプロンプトで下記の処理を行いたいのですが、どのようにコマンドを打てばよいのでしょうか? ファイル .\test の内容は以下のとおりです。 test1 30 50 12 test2 60 12 01 test3 *** 20 *** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (1)例えば "test2"という文字列を含む行と、合わせて下3行を拾って表示させたい時は、どのようにコマンドを打てばよいのですか? test2 60 12 01 のように表示させたい。 (2)あらかじめ、とりだしたい情報がn行目にあるとわかっている時に、 取り出したい行を複数指定して表示させるにはどのようにコマンドを打てばよいですか? (3)とりだした行の中に =***となる部分があれば echo TEST NG!! を実行したい。 なければ echo TEST OK を表示したい。

  • sedコマンドによる最終行の削除について

    sedコマンドを使用してファイルの最終行を削除する方法を調べていたのですが 最終行の削除は問題なくできたのですが最終行から特定行までを消すため以下のコマンドを発行したのですがうまくいきませんでした。複数サイトを見てみたんですが構文自体は同じでしたのでおそらく問題ないとは思うですが何か気づく方がいたらお教えください。 以下実行コマンド sed -e '$-3,$d' sed_test.txt

  • ファイルの先頭に文字を追加するには?

    ファイルの先頭に文字を追加するにはどうしたらよいでしょうか? ファイルの末尾に追加するなら echo 追加する文字列 >> ファイル名 でオッケーですが、 先頭に追加する方法が、単純そうなのに、調べても分かりませんでした。 例えば test.txt の中身が以下で、 aaa bbb # echo hello >> test.txt で aaa bbb hello となりますが、 hello aaa bbb とするには、どうしたらよいでしょうか。 単純なコマンドはあるでしょうか。

専門家に質問してみよう