• ベストアンサー

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

Takami Torao(@koiroha)の回答

回答No.1

シェルであれば正規表現を使うのが一般的とは思いますが: $ echo "Array('3','7','9','11');" | sed -e 's/(/=(/g' Array=('3','7','9','11'); awk で '(' で分割しても可能ですけど少し不自然な使い方ですね。 $ echo "Array('3','7','9','11');" | awk -F'(' '{print $1 "=(" $2}' Array=('3','7','9','11');

inshin
質問者

お礼

ご回答いただきまして、ありがとうございます。 遅くなりまして、すみません。 普通に考えて正規表現を使えば簡単にできますよね。 正規表現が嫌いというわけではないのですが、 普段あまり使わないため、あとあと見直したときに正規表現を調べなおしたりすることがあるので、 もしほかに方法があればと思い、質問させていただきました。 ありがとうございました。

関連するQ&A

  • コマンドの結果をシェルの配列に格納する方法

    cat test.txtのような、コマンドの結果が次のようなとき、うまくこれらをシェルの配列に格納する方法はありますか? ('3','9','11') ちなみに、'3'のような形ではなく、単純に3と格納されるようにしたいです。 できたらsedなど、正規表現を使わない方法を教えて頂きたいです。 宜しくお願い致します。

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

    シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入 の継続質問です。よろしくお願いします。 tacとawkを用いて、"ある特定の文字列の前に文字列を挿入"ということができるのは、 確認することができました。 例えば、  script.awk (awkスクリプト)  sample.txt (処理対象ファイル) という環境で、  $ cat script.awk  $ tac sample.txt | awk -f script.awk | tac > sample2.txt とコマンドを入力した場合、 sample2.txtに、処理が完了したテキストが作成され、 中身も問題ないことを確認できました。 しかし以下のようなことを実現しようと思うと、 うまく行きませんでした・ 「非対話的に上記の処理を行いたいのです」 上記の方法では、 catとtacと2回コマンドを叩く必要があります (1回にもできるのでしょうが…) できれば、自動的に流れる膨大なシェルスクリプトの処理の中で、 上記の処理を自動的に行うということを実現したいのです。 例えば、auto.shというシェルを実行すれば、 勝手にawkスクリプトを読み込み、勝手に変換したものを出力してくれる… そのようなシェルを作成したいと考えています。 そこで色々試しましたが上手くいきません。 1.コマンドの分解ができない tac sample.txt | awk -f script.awk | tac > sample2.txt の上記を、  #!/bin/sh  tac sample.txt  awk -f script.awk  tac > sample2.txt のようにシェルスクリプトに記述しなおして実行しましたが、 上手くいきませんでした。 2.script.awk(awkスクリプト)を内部に取り込み 外部ファイルとして存在している、script.awkをなんとか シェルに組み込もうと思って、  awk {(script.awkの内容をそのまま記述)} のように行いましたが、文法的にやはり無茶苦茶でした・・・。 正直、2番が無理であれば仕方ありませんが、 最低でも1は実現したいと思います。 1の方法だけでも良いので、どなたか回答をお願いします。

  • 100文字が並ぶテキストを10行10列にする方法(Bシェルにて)

    100文字が並ぶテキストをBシェルにて10行10列にする方法を教えてください。 テキスト(test.txt)には、次のようにスペースで区切られて100文字入っています。(この例の様に規則性はありません) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ..(省略) ↓これを 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (省略) の様にするやり方を教えてください。 Bシェル初心者です。宜しくお願い致します。

  • 正規表現(regex)でパラメータ付き文字列を置換したい

    あるページ内に次のようなjavascriptがあるとします。 javascript:test(1); javascript:test(2); javascript:test(3); javascript:test(4); これらを次のように一度に置換したいわけです。 test_1.txt test_2.txt test_3.txt test_4.txt 正規表現で置換するスクリプトを作っていますが、3行目の書き方をどうしていいかで困っています。 アドバイスお願いいたします。 ---- スクリプトサンプル ------- Set regEx = New RegExp regEx.pattern = "javascript:test\(.*\);" repStr = 「この記述方法がわからない」 Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop

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

    こんにちは。 シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入したいと思います。 ・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で文字列を挿入するなどですが・・・よく分かりません) どなたか、よろしくお願いします。

  • 【Cシェル】ファイルの切取り/挿入方法

    Cシェル初心者です. 下記のようなファイルで"begin BBB"~"end"を切り取って(※(1)) いろいろ編集し、元のファイルの中に戻したい場合(※(2))の手順って どのようにしたらよいでしょうか? (1)切り取り方法の質問  ($1==begin、$2==BBBからendまでの切り取り) (2)編集後のファイルの挿入方法の質問。  (ファイルの途中への挿入方法) 以上、2点のご教授よろしくお願いします。 尚、環境はSolalis2.6です。 %cat file.txt begin AAA ・ ・   begin BBB   ・   ・   end ・ ・ end

  • テキストから複数の任意の文字列を含んだ行を抽出したいです

    cat test.txt | grep aaabbb とするとaaabbbを含んだ行を抜き出せるんですが、 aaabbbまたはcccdddという文字列を含んだ行を抜き出したいときにはどうすればいいでしょうか? どちらか一方もしくは両方を含んだ行を抜き出してほしいです。 ログを見る際に使いたいのでコマンド一つで出来ると助かります。

  • ○文字目に文字挿入

    お世話になっています。 正規表現の文字置換s///gを使って数字の3桁目に-を挿入したいですが、どうしたらいいのかわかりません。 どなたか教えていただけないでしょうか。 5770001 ↓ 577-0001 にしたいのでしが…

    • ベストアンサー
    • Perl
  • UNIX のシェル 文字の置換について

    シェルでファイルの文字列を置換したいです。 /*~*/のコメントの文字なので、1行数を変えたくないです。 ─────────────────────────── ※1文字分の空白を「_」で表示します。 test.txtファイルの「XXXXX」を「aa___」に置換する。 ─────────────────────────── 【test.txt 置換前】 /**************/ /*_XXXXXYYYYY_*/ /**************/ 【シェルの内容 test.sh】 #!/bin/csh set IN_henkan = `printf "%-5s" $1` perl -i -p -e 's/XXX/'$IN_henkan'/g' test.txt 【シェルを実行】 test.sh aa 【test.txt置換前 希望する状態】 /**************/ /*_aa___YYYYY_*/ /**************/ 【test.txt置換前 実際の状態】 /**************/ /*_aa_YYYYY_*/ /**************/ ─────────────────────────── 「aa」の後ろに1文字分の空白しか挿入されないです。

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------