sed、awk、またはbashスクリプトを使用してLinuxで次の形式を実行する方法

sed、awk、またはbashスクリプトを使用してLinuxで次の形式を実行する方法


file1次の内容を含む2つのファイルがあるとします。

message_aaa.wav
  テスト1(合計1個)
    テストタグ:aaa
    テスト文:テストaaa
    テスト文字列:テストメッセージ
    通訳スコア:567
message_bbb.wav
  テスト1(合計1個)
    テストタグ:bbb
    テスト文:bbbテスト
    テスト文字列:テストbbb
    通訳スコア: 972
Message_ccc.wav
  テスト1(合計1個)
    テストタグ:ccc
    テストドア:ccc
    テスト文字列:cccテスト
    通訳スコア: 921     
   

file2以下の内容があります。

message_aaa.wav
  テスト1(合計1個)
    テストタグ:aaa
    テスト文:テストaaa
    テスト文字列:テストメッセージ
    通訳スコア:55
message_bbb.wav
  テスト1(合計1個)
    テストタグ:bbb
    テスト文:bbbテスト
    テスト文字列:テストbbb
    通訳スコア: 34
message_ccc.wav
  テスト1(合計1個)
    テストタグ:ccc
    テストドア:ccc
    テスト文字列:cccテスト
    通訳スコア:12

CSV3つの列がある/ファイルを作成したいと思いますxls。最初の列はファイル名になり
、2番目の列は「説明スコア」になり、3番目の列は以下のように「説明スコア」になります。 .wavfile1
from file1
from file2

message_aaa.wav,567,55
message_bbb.wav,972,34
message_ccc.wav,921,12

ベストアンサー1

このようなawk

awk '/^[mM]essage_.*.wav/{
    n=NR+5;i=tolower($1)
}
n==NR{
    a[i]=a[i]","$4
}
END{
    for ( i in a){
        print i""a[i]
    }
}' file1 file2

行が(値がある行番号)に設定された[mM]essage_.*.wav変数で始まり、wavファイル名が変数aに格納されます。nNR+5Interpretation Scorei

index asに配列を作成するときは、n==NR配列に($ 4)を追加します。iInterpretation Score

END必要に応じて、すべての配列インデックスとその値を印刷します。

Interpretation Scoreここでは、行が各テストで常に5番目の行であると仮定します。

おすすめ記事