あるログから特定の文字列を抽出したいのですが
方法が思いつかず困っています
ログには下記に示したパターンが複数個あります。
TEST: *****: 種別コード ****************
************************ テスト結果(OKorBAD)
*:可変長の文字列
この中からテスト種別コードと テスト結果を抜き出して
☆☆☆☆,OK
★★★★,OK
■■■■,BAD
:
:
上記のデータにまとめたいのですがどうすればよいのでしょうか?
私自身はC言語はある程度理解しているつもりですが
文字列処理は苦手です。
このようなケースを対処しようした場合、最適なスクリプト言語
や方法論でも構いませんのでご教示いただければと思います。
いちからじっくり挑戦したいと思っています。
出来れば参考になるコードも合わせて記載していただけると
助かります。
どうか御願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3 に対する補足です.
文字列の1文字目から3文字printする場合
print $2;
↓
print substr($2,1,3);
のように変更します.しかし,プログラミングを身につけるには,
手間を惜しまずに自分で文法書を読み/調べることが必要です.
しっかり勉強してくださいね.
No.3
- 回答日時:
awkで作ってみました.
test==1 { print $2 ; test=0;}
/^TEST/ {printf(" %s ", $3); test=1;}
行頭にTESTの文字列があれば,第3欄を書き出し改行しない.フラグtestをセット.
フラグtestが立っていたら,TESTの次の行と判断して第2欄を書き出し改行.
この回答への補足
awkコマンドを使うとシンプルな表現で強力な文字列処理が可能になるみたいですね。
大変参考になりました。
^TESTの前後に/で囲むのは理解できていませんが。。。
一つ質問はあるのですが
テスト結果(OKorBAD)の抽出は---第2フィールド目を抜き出すと
していますが、右端の最初の文字列を抜き出すといった
表現は可能でしょうか?
今後のログ出力の変化--テスト結果以外の文字列が複数分けて出力する可能性
を考えるとそちらで対応のほうが汎用性が高いとみています。
No.2
- 回答日時:
2行で1つのテスト種別コードの結果というのは固定なのでしょうか?
それとも不定(1~複数)なのかな?
Windows系で処理したいなら、VBAとかで
・出力ファイルopen
・ログファイルopen
・ログファイルのEOFまで以下を繰り返す
-------------------------------------------
・行単位に読み込む
・行頭がTESTなら:で分割し、種別コードを抜き出して出力 + カンマ出力
・行頭がTESTでなければ 、テスト結果を出力 + 改行出力
-------------------------------------------
・ログファイルclose
・出力ファイルclose
Unix/Linux系で処理したいなら、1行で1つのテスト種別コードの結果に
なるように変換してから、awk等を使って抜き出す。
まぁ、スクリプト言語なら大抵VBAみたいなロジック組めるから
それで処理してもいいけどね。
>2行で1つのテスト種別コードの結果というのは固定なのでしょうか?
はい2行でワンセットです。
記載していただいた、ロジックでいけそうな気がします。
Widowsでの処理なので、Excel等のVBAは要件にあっているようですね。
該当する関数を探して組んでみようかと思います。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
ラズパイpico PIOモード
-
小学1年生の子です。塾に行かせ...
-
プログラミング
-
pythonで複数画像からgifを作る...
-
Pythonでgif画像が上手く作れない
-
プログラミング ソースコード
-
正規表現で複数マッチ条件で悩...
-
vba クリップボードクリアにつ...
-
RTKPOSTのファイル生成について
-
windowsでテキストファイルの各...
-
Pythonって何を意識した言語な...
-
pythonにてseleniumを使うも、...
-
Gitについて質問。 クローンし...
-
スカラーのベクトル微分
-
matplotlibで任意の角度の円弧...
-
プログラミングで例えばゲーム...
-
Webサイト内に埋め込んだmp4動...
-
テキストファイルのファイル名...
-
Selenium4でボタンをクリックで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
chatGPTで次々と質問をしていく...
-
昔のパソコン少年の武勇伝「店...
-
スカラーのベクトル微分
-
ハッシュテーブル(連想配列)が...
-
最新のプログラム言語を学ぶに...
-
pythonにてseleniumを使うも、...
-
Windowsのアプリ開発ってなんの...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
sublimit textっていうエディタ...
-
フリーランスのエンジニアって...
-
ExcelVBAでFormulaR1C1を列範囲...
-
matplotlibで任意の角度の円弧...
-
そのまま使っただけなのに・・...
-
家庭のパソコンで Python の 環...
-
初心者powershellのPS1ファイル...
-
Webプログラムってネイティブア...
-
httpリクエストの送り元の特定
-
プログラミングで例えばゲーム...
-
rpa化する言語としてら何があり...
おすすめ情報