我有两个文件 - 一个包含地址(行号),另一个包含数据,如下所示:
地址文件:
2
4
6
7
1
3
5
Run Code Online (Sandbox Code Playgroud)
数据文件
1.000451451
2.000589214
3.117892278
4.479511994
5.484514874
6.784499874
7.021239396
Run Code Online (Sandbox Code Playgroud)
我想根据地址文件的数量随机化数据文件,所以我得到:
2.000589214
4.479511994
6.784499874
7.021239396
1.000451451
3.117892278
5.484514874
Run Code Online (Sandbox Code Playgroud)
我想在python或bash中做到这一点,但还没有找到任何解决方案.
和awk:
awk 'NR==FNR {a[NR]=$0; next} {print a[$0]}' data.txt addr.txt
Run Code Online (Sandbox Code Playgroud)
NR==FNR {a[NR]=$0; next}创建一个关联数组,a其中键是记录(行)号,值是整个记录,这仅适用于第一个文件 ( NR==FNR),即data.txt. next使awk转至下一行而不进一步处理记录
{print a[$0]}打印数组中的值,键为当前文件的 ( addr.txt) 行(记录)号
例子:
% cat addr.txt
2
4
6
7
1
3
5
% cat data.txt
1.000451451
2.000589214
3.117892278
4.479511994
5.484514874
6.784499874
7.021239396
% awk 'NR==FNR {a[NR]=$0; next} {print a[$0]}' data.txt addr.txt
2.000589214
4.479511994
6.784499874
7.021239396
1.000451451
3.117892278
5.484514874
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |