- ベストアンサー
Bシェル 文字列に含まれる特定文字のカウント
文字列の中に特定の文字が何個含まれているのかを知りたいです。wcやgrep を使ってみましたが、うまくいきません。教えてください。 例えば「123456789abc1defg0123456789」 の中に「1」は3個含まれているってのを調べたいです。
- heppocose
- お礼率87% (7/8)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字列の中には空白文字が無いとすると、bashの組み込み機能だけで出来ます。 #!/bin/bash A=123456789abc1defg0123456789 B=/$A/ ←先頭や末尾に特定文字が含まれている場合の考慮 IFS=1 ←ここに特定文字(一文字に限る) set -- $B echo $(($#-1)) 空白や記号が含まれている場合で、bashも無い場合 #!/bin/sh A=123456789abc1defg0123456789 LENA=`expr length "$A"` B=`echo "$A" | sed s/1//g` ←削除すると短くなる LENB=`expr length "$B"` echo `expr $LENA - $LENB` こっちの方がわかりやすいか。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
どこまで使ってよくて, どこからは使っちゃいけないんだろ.... Perl とか awk とかを使えば一瞬なんだけど.... echo して tr から wc とかでいける?
お礼
ご回答ありがとうございました。Perlは使った事ないもので・・ awkでも試みましたが分かりませんでした。
関連するQ&A
- シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入
こんにちは。 シェルスクリプトを用いて、ある特定の文字列の前に文字列を挿入したいと思います。 ・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
- ファイルからある文字列の個数を数えたい
perl5でunixの"wc"や"grep -c"みたいに1つのファイルの中からある文字列の個数を カウントするスクリプトを作ろうとしています。 ファイルは256文字×10万行くらいのテキストで、 検索する文字列は15文字前後×40個(例えば「apple-000001」「lemon_orange」など)です。 どのようなスクリプトを組んだら効率よく各文字列をカウントできるのでしょうか? それよりwcやgrep -cを40回行った方が早いのでしょうか?
- ベストアンサー
- Perl
- EXCEL2003 指定した位置の文字列を取り出す
"ABC,DEFG,H,IJ,KLMNO,PQ,RSTU"というような文字列に対して、「1」ならば"ABC"を、「5」ならば"KLMNO"を取り出したいと思います。 そういう関数があったと思うのですが思い出せません。 どなたか教えてください。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- ディレクトリ内より特定の文字列を検索する際に関しまして
文字列の検索に関して質問させていただきます。 あるファイル内から、 特定の文字列を探す際は、 grepを使用して検索をしています。 また、全体の中からファイル名を探す際なども、 findを使って、 探したりしているわけなんですが、 そうではなくて、 あるディレクトリ内にある 複数のファイル内全てから、 「特定の文字列が含まれているか?」を 探すコマンドってあるのでしょうか? 例えばこんな感じです。 ディレクトリAにファイルが10個あるとします。 この10個のファイルの中のどこかに、 「FOO_HEADER」という文字列が 存在しているか?を確認したいときに、 そう思いました。 今までなら、grepを使って、 1つずつファイル内を探したりしていました。 検索サイトで探してみたのですが、 キーワードが悪いのか、 どうも見つけることが出来ませんでした。 もしご存知の方がいらっしゃいましたら、 アドバイスの程お願い致します。 ■OS:Fedora9 ※ 通常はbashを使用しています。
- ベストアンサー
- Linux系OS
- 文字列数の高速なカウント
あるファイルに入っている文字列をカウントする早い方法を探しています。 grep -c "sample"やawk '{if($1 ="sample") print}' |wc などを試していますが、巨大なファイルのためすごく時間がかかっています。 他に何か早く計算できる方法はないでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- 特定の文字列を含む行だけ削除する方法?
いつもお世話になっています。 Unixであるテキストファイルから、 特定の文字列を含む行(レコード)だけを 削除する方法を教えてください。 現在、grepを使って、いろいろ試しているのですが、 正規表現で、 ”***”を含まない行(レコード)だけを 切り出すとう正規表現の説明が見あたりません。 "^**"は、**以外の文字を検索できるようですが、 文字列に対しては、使えません。 grep以外の方法でも良いのですが、 なるべくシンプルにできる方法がありましたら 教えてください。 宜敷お願いします。
- ベストアンサー
- その他(OS)
- Perlで一行で文字列の置き換え
Perlでたとえば 文字列を$a = "abcdefg";を $a = "あdefg";と 先頭のabcをあに置き換える方法を1行の文で行いたいのですが可能でしょうか? 2行以上でなく、1行で済ませる方法です。 $b = "abcい";なら "あい"となってほしいです。
- ベストアンサー
- Perl
- 文字列の置換
VB6で開発してます。 以下のようなことをやりたいのですが、 効率のよい方法はないものでしょうか? <やりたいこと> 文字列1の中にある『_』と同じ位置にある 文字列2の文字を『_』に置き換えたい。 [変換前] 文字列1:12_3456_ 文字列2:ABCDEFGH [変換後] 文字列1:12_3456_ 文字列2:AB_DEFG_ どなたかわかる方がいらっしゃったら教えて下さいm(_ _)m
- 締切済み
- Visual Basic
- 文字列に数字を含むセルを調べたい
Excel2007を使っています。 A列の文字列に数字を含む場合、B列に「含む」と表示させたいです。 どういった関数でできるのでしょうか? A列 B列 ABC1 含む DEFG 23HIJK 含む I4M5N 含む OPQ RSTUV W6X 含む 7YZ8 含む
- ベストアンサー
- オフィス系ソフト
お礼
notnotさん、ありがとうございました。 文字列の長さの差分で数を数えるんですね。とても参考になりました。