- ベストアンサー
シェルで文字列に文字を挿入する方法
Takami Torao(@koiroha)の回答
- Takami Torao(@koiroha)
- ベストアンサー率29% (18/61)
シェルであれば正規表現を使うのが一般的とは思いますが: $ 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');
関連するQ&A
- コマンドの結果をシェルの配列に格納する方法
cat test.txtのような、コマンドの結果が次のようなとき、うまくこれらをシェルの配列に格納する方法はありますか? ('3','9','11') ちなみに、'3'のような形ではなく、単純に3と格納されるようにしたいです。 できたらsedなど、正規表現を使わない方法を教えて頂きたいです。 宜しくお願い致します。
- ベストアンサー
- Linux系OS
- 【継続質問】シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入
シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入 の継続質問です。よろしくお願いします。 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の方法だけでも良いので、どなたか回答をお願いします。
- ベストアンサー
- Linux系OS
- 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
- ベストアンサー
- JavaScript
- シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入
こんにちは。 シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入したいと思います。 ・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で文字列を挿入するなどですが・・・よく分かりません) どなたか、よろしくお願いします。
- ベストアンサー
- Linux系OS
- 【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
- ベストアンサー
- その他(OS)
- テキストから複数の任意の文字列を含んだ行を抽出したいです
cat test.txt | grep aaabbb とするとaaabbbを含んだ行を抜き出せるんですが、 aaabbbまたはcccdddという文字列を含んだ行を抜き出したいときにはどうすればいいでしょうか? どちらか一方もしくは両方を含んだ行を抜き出してほしいです。 ログを見る際に使いたいのでコマンド一つで出来ると助かります。
- ベストアンサー
- Linux系OS
- 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文字分の空白しか挿入されないです。
- 締切済み
- Linux系OS
- 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 -----------------------------
- 締切済み
- その他(プログラミング・開発)
お礼
ご回答いただきまして、ありがとうございます。 遅くなりまして、すみません。 普通に考えて正規表現を使えば簡単にできますよね。 正規表現が嫌いというわけではないのですが、 普段あまり使わないため、あとあと見直したときに正規表現を調べなおしたりすることがあるので、 もしほかに方法があればと思い、質問させていただきました。 ありがとうございました。