特定のデータセットで検索し、データ列に数字を追加する必要があるパターンを含むファイルがあります。スクリプトを作成するか、awk/sed/grepを使用して特定のファイルにパターンを自動的に照会して、私が持っているデータと交差させ、一致するパターンを持つ列に数字を追加したいと思います。
例:-
データ
タイトル、数、RESA
10th ECOMF,PAB 1 MAT
10th ICOCPS (CPV-'10) 23 SCI
10th ICOCPS (CPV-'10) 6 SCI
10th ICOMAMOS (M2S-X) 3 EEE
JOP 32 COP
AIP 34 Sff
JOP 43 COP
HIT 42 tilde
私のスキーマファイルにジャーナル名が含まれています。
10th ECOMF,PAB
10th ICOCPS (CPV-'10)
10th ICOCPS (CPV-'10)
10th ICOMAMOS (M2S-X)
JOP
AIP
JOP
HIT
SUPERCONDUCTIVITY (M2S-X)
希望の出力:
10th ECOMF,PAB 1
10th ICOCPS (CPV-'10) 29
10th ICOMAMOS (M2S-X) 3
JOP 75
AIP 34
HIT 42
.
.
まもなく、
PS: - データはタブで区切られており、同じデータがCSVにあります。
答え1
アッ解決策:
awk 'BEGIN{ FS=OFS="\t" }
NR==FNR{ if(NF && !($0 in b)) { a[++c]=$0; b[$0] } next }{ b[$1]+=$2 }
END{ len=length(a); for(i=1;i<=len;i++) if(a[i] in b) print a[i],b[a[i]] }' patterns data
BEGIN{ FS=OFS="\t" }
- フィールド区切り記号の設定a[++c]=$0; b[$0]
- ユニークなコレクション雑誌patterns
ファイル名b[$1]+=$2
- 各数字をまとめる雑誌data
ファイル名if(a[i] in b) print a[i],b[a[i]]
- それぞれの合計値を追加します。雑誌pattern
ファイル名
出力:
10th ECOMF,PAB 1
10th ICOCPS (CPV-'10) 29
10th ICOMAMOS (M2S-X) 3
JOP 75
AIP 34
HIT 42
...