ファイル内の番号に基づいて2つのファイル、つまり同じ番号の2つのファイルをリンクしたいと思います。
Toyota model1
BMW model2
Benz model3
BMW model4
BMW model5
Benz model6
Benz model7
そして2番目のファイル
class C model1
class E model2
class A model3
class W model4
class W model5
class C model6
class A model7
このように、数字に基づいて2つのファイルをリンクし、各モデルを1つのファイルにリンクしたいと思います。
Toyota class C model1
BMW class E model2
Benz class A model3
BMW class W model4
BMW class W model5
Benz Class C model6
Benz Class A model7
後で「モデル」文字列を削除してください。
私のコード、
sort -V file1 > new_file1
sort -V file2 > new_file2
join newfile1 new_file2 > result.txt
sed 's/model[(1-9)]//g' result.txt > result_1.txt
問題ファイルの結合中にエラーが発生します。
join: file1.txt:10: is not sorted: 03Benz model 249
join: file2.txt:4: is not sorted: BMW model 2
それ以降に頻度を計算したい場合はどうすればよいですか?
( this pair happen in the text 2 times) after joined
Toyota class C 1
BMW class E 1
Benz class A 2
BMW class W 2
Benz Class C 1
ベストアンサー1
使用join
。
ファイルの最初のスペース文字をスペース以外の文字に変更すると、ファイルをスペースで区切られたレコードに変換するのに十分なようです。
%
以下は、最初のスペースを各ファイルの2番目の列に置き換えてから連結する実装です。
$ cat file2 | sed -e 's/ /%/' | join -1 2 -2 2 - file1
または
$ <file2 sed -e 's/ /%/' | join -1 2 -2 2 - file1
生産する
model1 class%C Toyota
model2 class%E BMW
model3 class%A Benz
model4 class%W BMW
model5 class%W BMW
model6 class%C Benz
model7 class%A Benz
タブ区切り形式に変換する必要がある場合に使用できますtr
。
tr ' %' '\t '