Bash Shell根据模式对文件进行排序

Bash Shell根据模式对文件进行排序,bash,shell,sorting,awk,Bash,Shell,Sorting,Awk,假设在第1列中有两个值相同的文件(顺序不同) 第一个: 2 A 6 B 3 C 1 D 4 E 第二个: 6 F 3 G 2 H 4 I 1 J 我想根据第一个文件的第一列对第二个文件进行排序。理想产出: 2 H 6 F 3 G 1 J 4 I 如果 您的第一列不会有重复的值 f1和f2在第1列中的值相同 试试这个: awk 'NR==FNR{a[$1]=$0;next}{print a[$1]}' f2 f1 根据数字将第二个文件中的字母放入secondArray的索引中: 例如

假设在第1列中有两个值相同的文件(顺序不同)

第一个:

2 A
6 B
3 C
1 D
4 E
第二个:

6 F
3 G
2 H
4 I
1 J
我想根据第一个文件的第一列对第二个文件进行排序。理想产出:

2 H
6 F
3 G
1 J
4 I
如果

  • 您的第一列不会有重复的值
  • f1和f2在第1列中的值相同
试试这个:

awk 'NR==FNR{a[$1]=$0;next}{print a[$1]}' f2 f1

根据数字将第二个文件中的字母放入secondArray的索引中: 例如

secondArray [6] = F, secondArray [3] = G, secondArray[2] = H
然后写入它们,或者使用第一个数组的顺序通过索引secondArray获取值

result[1] = secondArray[firstArray[1]]  
在哪里 firstArray[1]==2,firstArray[1]==6 及

secondArray[firstArray[1]]   == H ,      secondArray[firstArray[2]] ==F