当方、サーバ管理でインフラ系の経験しかなく、今回はperlでスクリプトの作成に挑戦しておりますがなかなか理解できていません。お知恵をお貸しください。
やりたいこと:
ある入力を受けたら、別ファイルに照会して特定列の文字列を抽出する。以下に例を示します。
入力が gad の場合(小文字です)、file1を参照する。例では一行目にGAD****があるのでこれに該当することとする。最終的にoffice が出力されるようにしたい。
file1の内容:
GAD93911 <test1> office
HOA14845 <test2> desk
ABC52311 <test3> chair
KFI33823 <test4> home
よろしくお願いいたします。
No.3
- 回答日時:
サーバ管理のインフラ系って、イーサネット引いたり、HDDつけたりなのかな。
知識の度合いもわからないので、とりあえず、簡単な例です。設計条件がはっきりしていないので、的外れだと申し訳ないのですが、勝手に解釈してサンプルを示してみます。とっかかりになれば、いいのですが。参照ファイルが
1行1レコード
3つのフィールドで構成されている
フィールドセパレータは、空白文字
行頭に空白文字は無い
と仮定します。
inter10 さんは書きました:
> ある入力を受けたら、別ファイルに照会して
ある入力は、$searchkeyに当たるかな。
別ファイルは、$searchfileに当たるのかな。
----- ここから -----
01: #!/usr/bin/perl
02:
03:$searchfile = "file1";
04:$searchkey = "gad";
05:
06:open FH, $searchfile;
07:
08:while( $l=<FH> ) {
09: @f = split /\s+/, $l;
10: if( $f[0] =~ /$searchkey/i ) {
11: print $f[2], "\n";
12: }
13:}
14:
15:close FH
16:
----- ここまで -----
プログラムの主要な行の説明は、
08: ファイルハンドラから1行取り出し、変数$lに格納。
EOFであれば、ループから抜け出す。
09: 1行を分割して、それぞれリスト変数@fに保存する。
セパレータは、正規表現で「空白文字1文字以上」とする。
10:第1フィールド$f[0]から検索文字を正規表現でパターンマッチ評価する。
「$searchkeyを含む、大小文字区別なし」としている。
11:パターンがマッチした場合、第3フィールド$f[2]を出力する。
サンプルコードはインデントのため、全角スペースを使っています。こぴぺは気をつけてください。参考になれば、うれしいです。
お礼遅れてすみません。丁寧な解説をいただきありがとうございます!おかげさまでこちらのコードを元に、きちんと期待の動作をさせることができました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現 .+? について
-
正規表現。行頭が○○以外にマッ...
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
「何とかで始まり、何とかで終...
-
各項目がダブルクォーテーショ...
-
csvデータのダブルクォーテーシ...
-
正規表現で、特定の文字列を含...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
VBA 置換文字がみつからない時
-
WORDで改ページすると時々グレ...
-
マクロを使ってフォルダー内に...
-
VBAの文字列の中に”(全角のダブ...
-
漢字からカタカナ変換マクロ
-
何故、日本は未だに数字を3桁...
-
Excel VBAでPDFファイルをMicro...
-
csvデータ ダブルクォーテ...
-
文字コードの%E3%80%とは何です...
-
Accessで日付や数値を全角で表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現
-
正規表現でパスワードのチェック
-
正規表現で「円(価格)」文字列...
-
コマンドプロンプトでのsedの使...
-
sedの正規表現でグループ化する...
-
シェルスクリプト [[ $number =...
-
正規表現-数字
-
正規表現で数字をメタ文字に置...
-
正規表現 .+? について
-
この正規表現を教えて!
-
【正規表現】コメントアウトさ...
-
正規表現。行頭が○○以外にマッ...
-
Perlで別ファイルから文字列の抽出
-
正規表現について VB6
-
メールアドレスかどうかの
-
配列中の検索文字全が含まれる...
-
置換演算子についての疑問
-
配列内の要素をパターンマッチする
-
アスタリスクを検索できません
-
perlで記号除去を行いたいので...
おすすめ情報