Text-Processing
如何根據文件內的 Number/Counter 排序和加入?
我想根據文件中的編號加入兩個文件,兩個編號相同的文件
Toyota model1 BMW model2 Benz model3 BMW model4 BMW model5 Benz model6 Benz model7
和第二個文件
class C model1 class E model2 class A model3 class W model4 class W model5 class C model6 class A model7
我想根據編號加入兩個文件,像這樣,將每個型號相互連接在一個文件中。
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
使用
join
.看起來將文件中的第一個空格字元更改為空格以外的字元就足以轉換文件以空格分隔的記錄。
這是一個將第一個空格替換為
%
然後加入每個文件的第二列的實現。$ 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 '