PerlでCSVファイルの一致する列から行データを取得しますか?

PerlでCSVファイルの一致する列から行データを取得しますか?

CSVファイルを添付できず、内容が明確になるように画像を添付します。awkライナーを使用しましたが、perl出力は出ません。列番号と列テキスト/値が一致する行を取得する方法を教えてください。

コマンドの代わりにスクリプトで書くことはできますか?

$ perl -F, -lane 'print if $F[8]==WINDOWS2000-2' Compare_20180715191103.csv

そして

$ awk -F, -v OFS=, '$8 == "WINDOWS2000-2 "{ print }' Compare_20180715191103.csv

ここに画像の説明を入力してください。

ベストアンサー1

以下を行う必要があります。

perl -F, -lane 'print if $F[7] eq "NAB-ITSA-LINUX-7"' URT_Compare_20180715191103.csv

以下の3つのことを処理すると大丈夫でしょう。

  1. "=="演算子は、オペランドの数学的同一性をテストするために使用されます。あなたの場合のように、文字列比較のためにeqこれがすべてです。
  2. 定数文字列は引用符で囲む必要があり、OTWはサブルーチンとして扱われます。
  3. Perl配列のインデックス付けは0から始まるので、実際には配列の要素を$F[8]参照します。ninth@F

基本的な仮定は次のとおりです。

  • 第8回戦は部分比較ではなく全フィールド比較だ。つまり、コンテンツは文字エラーなしでここに示されているものとまったく同じでなければなりません。
  • フィールドが分​​割され、フィールド数が変更されるため、すべてのフィールドにカンマを使用しないでください。
  • 行末がUnix行末(LF = \n)であることが望ましいことを除いては重要ではありません。そうでない場合は、最初に変換する必要があります。

おすすめ記事