在awk中对字段进行排序

时间:2018-04-04 07:10:19

标签: bash sorting awk

我需要帮助在awk中排序。

数据: 品牌型号年份价格

输入文件

Toyota Camry 1999 120000 2000

Honda Civic 1990 100239 5000

Subaru Legacy 2003 72198 4300

Honda Accord 2008 80324 12839

Subaru WRX 2017 700 25000

Toyota Sienna 2005 75600 17832

这是给我的数据,我需要按价格然后按里程排序。

我用sort -k1,1b -k5,5n -k4,4n -k3,3n给了我输出:

Honda Civic 1990 100239 5000

Honda Accord 2008 80324 12839

Subaru Legacy 2003 72198 4300

Subaru WRX 2017 700 25000

Toyota Camry 1999 120000 2000

Toyota Sienna 2005 75600 17832

期望输出

Honda Civic 1990 80324 5000

Honda Accord 2008 100239 12839

Subaru Legacy 2003 700 4300

Subaru WRX 2017 72198 25000

Toyota Camry 1999 75600 2000

Toyota Sienna 2005 120000 17832

重点是基本上为每个品牌分类价格,里程和年份列。

1 个答案:

答案 0 :(得分:0)

使用GNU awk,多维数组和controlled scanning

df1['colnew'] = np.nan
TSs = df1['timestamp1']
for TS in TSs:
values = df2['timestamp2'][(df2['timestamp2'] > TS) & (df2['col03']==0)]
    if not values.empty:
        df1.loc[df1['timestamp1'] == TS, 'colnew'] = values.iloc[0]