首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据Unix中的字符从文件中随机选择行?

如何根据Unix中的字符从文件中随机选择行?
EN

Stack Overflow用户
提问于 2017-04-04 17:35:30
回答 1查看 69关注 0票数 1

我想根据行中的前几个字符从文件中随机选择行。在我的文件中,前几个字符被命名为“杂交: 2",”混合: 19“等等。我想从每个混合分类中随机选择一个有代表性的行。

我有一个文件格式如下:

代码语言:javascript
复制
Hybrid: 2 Parents: 12 and 49     9.419642 0.000000
Hybrid: 2 Parents: 15 and 49     6.427708 0.000000
Hybrid: 2 Parents: 16 and 49     8.383469 0.000000
Hybrid: 2 Parents: 17 and 49     7.869732 0.000000
Hybrid: 19 Parents: 2 and 23     6.905067 0.000000
Hybrid: 19 Parents: 2 and 30     7.913185 0.000000
Hybrid: 19 Parents: 2 and 57     10.724088 0.000000
Hybrid: 52 Parents: 2 and 23     9.398697 0.000000
Hybrid: 44 Parents: 2 and 30     7.739156 0.000000
Hybrid: 50 Parents: 2 and 30     10.051190 0.000000

和我想创建这样的文件:

代码语言:javascript
复制
Hybrid: 2 Parents: 15 and 49     6.427708 0.000000
Hybrid: 19 Parents: 2 and 23     6.905067 0.000000
Hybrid: 52 Parents: 2 and 23     9.398697 0.000000
Hybrid: 44 Parents: 2 and 30     7.739156 0.000000
Hybrid: 50 Parents: 2 and 30     10.051190 0.000000

我以为shuf会有用,但我看不出如何在这里应用它。我不知道该如何处理,所以任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 09:17:18

得到独特的线条(杂交19,杂交52,杂交44,杂交50,杂交2)。在此之后对文件进行洗牌。洗牌将返回文件中行的随机排列。获取洗牌文件的第一行。

这样做的代码如下

将下面的脚本复制到一个文件中,比如UniqueLines.sh

代码语言:javascript
复制
#!/bin/bash

filePath=$1
cat $filePath | awk '{print $2}' | uniq > /tmp/unique_ids
for i in `cat /tmp/unique_ids`;do shuf file.txt | grep "Hybrid: $i " | head -1;done;

授予运行脚本的权限

代码语言:javascript
复制
chmod +x UniqueLines.sh

运行脚本

代码语言:javascript
复制
./UniqueLines.sh <full path to file>

Example:
./UniqueLines.sh /root/myfile.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43214002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档