• 如何乱序输出文本

    2014-10-08 21:26:49
    一个文本文件,如何按行乱序输出 这是我在工作中真实遇到的一个小问题,当时的场景是这样的,我们做了一个从网页里提取图片的策略,为了提升策略的效果我们需要找一些badcase,再针对这些badcase做优化,找专人...

    问题描述如下

    一个文本文件,如何按行乱序输出

    这是我在工作中真实遇到的一个小问题,当时的场景是这样的,我们做了一个从网页里提取图片的策略,为了提升策略的效果我们需要找一些badcase,再针对这些badcase做优化,找专人评估既有沟通成本还要等排期,于是经理鼓动组内同事每人评估100个样本,当然,评估的样本必须是随机的,给每个人分配100个随机样本的任务就落到了我身上。此是背景。

    我们姑且认为一个样本就是一行文本(实际上是这个文本对应的百度搜索结果,这样说是为了将问题简化),遗憾的是我拿到的一个大样本集合(大约几百万)是已经排好序的,如果我按顺序将每100行进行分割那会导致这100行内的样本不是随机的,如果有一个算法能从大样本中随机抽100条,那每运行一次,将抽取到的样本从中剔除,如此循环也能完成任务,但这样的可操作性显然是非常低的,而那时我可能需要在半个小时之内就将样本分配好,于是我想了一个办法,将这个问题分解为两步:1、将大样本集合按行打乱;2、按顺序将每100行分割成一个文本。步骤1使得整个文件的每行是以随机顺序出现的,这样我按顺序取的每100行自然也是随机的

    步骤2用Linux的split命令就可以轻松搞定,于是只剩下步骤1,也就是文章开头描述的问题,我想到的方法如下,假设输入文件为in.txt,输出为out.txt

    cat in.txt | awk 'BEGIN{srand()}{print rand()"\t"$0}' | sort -k1,1 -n | cut -f2- > out.txt

    命令行我就不一一详解了,只是说一下大致思路,这里主要用到的awk语句,它是Linux下功能非常强大的行文本处理命令,rand()会生成一个0-1的随机数,我们首先在每行文本的前面加一个随机数并且以\t分隔,然后用sort命令对第一列(生成的随机数)进行排序,这样它之后的数据(原来的文本)就是乱序的了,最后去除第一列,搞定!


    展开全文
  •  更新:2018-04-2713:25:25 其实直接用shuf就行: trainname='_train' testname='_test' shufname='_shuf' path="/data/mt/haiouzhang/lang_all/clean/all_lang/all_clean_2/"...for lang in ar bn km ...

     

     更新:2018-04-2713:25:25

    其实直接用shuf就行:

    trainname='_train'
    testname='_test'
    shufname='_shuf'
    path="/data/mt/haiouzhang/lang_all/clean/all_lang/all_clean_2/"
    for lang in ar bn km my ne tl ur hi kk he fa et bg da pl fi nl cs ro sv sl sk el hu sr hr no ka be mn mr ta uk az hy uz ht  #bg cs da de el en es et fa fi fr he hu id it ja ko ms nl no pl pt sk sr sv th tr vi zh
    do    
    {
        file=$path$lang
        shuf $file >$lang$shufname   #这句就是打乱。。
        cat $file$shufname | tail -n +10000 >$lang$trainname
        cat $file$shufname | head -n +10000 >$lang$testname
    }&
    done

     

     

     

    awk 'BEGIN{srand()}{b[rand()NR]=$0}END{for(x in b)print b[x]}' inputFile >shuf_kmm

     

    while read i;do echo "$i $RANDOM";done<inputFile|sort -k2n|cut -d" " -f1

     

    linux 删除文件的前几行

    sed -i '1,10d' file

     

    grep --color :高亮查询关键字

    grep -A 10 xxx : 显示关键字后10行,查异常栈时很有用

    grep -B 10 xxx : 显示关键字前10行

    grep -C 10 xxx : 显示关键字前后10行

    grep -i :不区分大小写

    egrep ‘aaa|bbb’:可以统计aaa或bbb的结果,egrep基本等价 grep -E

    【一】从第3000行开始,显示1000行。即显示3000~3999行

    cat filename | tail -n +3000 | head -n 1000

     



    【二】显示1000行到3000行

    cat filename| head -n 3000 | tail -n +1000

     

    *注意两种方法的顺序

    分解:
    tail -n 1000:显示最后1000行
    tail -n +1000:从1000行开始显示,显示1000行以后的
    head -n 1000:显示前面1000行

    【三】用sed命令

    sed -n '5,10p' filename 

     

    这样你就可以只查看文件的第5行到第10行。

    展开全文
  • linux命令(48):打乱一个文本文件的所有行如果用python读进内存再打乱的思路,如果大文件的话,就比较麻烦了网上找到一个简单的方法,shuf:$ shuf --help 用法: shuf [选项]... [文件]  或者: shuf -e [选项].....

    linux命令(48):打乱一个文本文件的所有行

    如果用python读进内存再打乱的思路,如果大文件的话,就比较麻烦了

    网上找到一个简单的方法,shuf:

    $ shuf --help
    用法: shuf [选项]... [文件]
     或者:  shuf -e [选项]... [参数]...
     或者:  shuf -i LO-HI [选项]...
    把输入行按随机顺序输出到标准输出。
    
    长选项必须使用的参数对于短选项时也是必需使用的。
      -e, --echo            将每个参数视为输入行
      -i, --input-range=LO-HI   将LO 到HI 的每个数字视为输入行
      -n, --head-count=行数       最多输出指定的行数
      -o, --output=文件       将结果输出到指定文件而非标准输出
          --random-source=文件    从指定文件获得随机比特
      -z, --zero-terminated 以0 结束行而非新行
          --help        显示此帮助信息并退出
          --version     显示版本信息并退出
    
    如果没有指定文件,或者文件为"-",则从标准输入读取。
    
    [请向bug-coreutils@gnu.org](mailto:请向bug-coreutils@gnu.org) 报告shuf 的错误
    GNU coreutils 项目主页:<<http://www.gnu.org/software/coreutils/>>
    GNU 软件一般性帮助:<<http://www.gnu.org/gethelp/>>
    请向<<http://translationproject.org/team/zh_CN.html>> 报告shuf 的翻译错误

    使用例子:shuf input_file.txt -o  output_file.txt
    展开全文
  • 问题:故障现象为ifconfig发现当前ip地址与修改的ip不一致,ls /etc/sysconfig/network-scripts/ifcfg-eth0与ifconfig显示的eth1文件名称不符,如图所示,此时需要网卡配置文件乱序问题进行修改。二

    linux网卡之乱序问题

    –ifconfig eth1 与eth0 不一致问题。

    当前系统版本为centos6.9

    一、 网卡配置文件乱序问题

    1. 问题:故障现象为ifconfig发现当前ip地址与修改的ip不一致,

    ls /etc/sysconfig/network-scripts/ifcfg-eth0与ifconfig显示的eth1文件名称不符,如图所示,此时需要对网卡配置文件乱序问题进行修改。

    这里写图片描述

    二、 解决办法

    1. 编辑vim /etc/udev/rules.d/70-persistent-net.rules 按照图2进行操作

    2. 按照图2进行操作,最后保存

    这里写图片描述

    3. 编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0

    这里写图片描述

    4. 最后:重启网络:service network restart

    如果ifconfig命令下,eth1没有改变为eth0,
    重启系统:init 6
    或:service NetworkManager restart可以解决。“`

    展开全文
  • 为了达到随机性,需要对文件打乱顺序后再抽取  Shell代码  [root@localhost tmp]# for i in {1..10}; do echo "$RANDOM $RANDOM $RANDOM"; done | sort -n > t  [root@localhost...
    假设一个文件是已经排好序的,现随机抽取里面的部分。为了达到随机性,需要对文件打乱顺序后再抽取 

    Shell代码  收藏代码
    1. [root@localhost tmp]# for i in {1..10}; do echo "$RANDOM $RANDOM $RANDOM"; done | sort -n > t  
    2. [root@localhost tmp]# cat t  
    3. 129 32444 4962  
    4. 149 19841 3307  
    5. 2327 21849 3066  
    6. 4138 28425 21201  
    7. 5076 20742 2021  
    8. 11646 4268 18112  
    9. 16553 16363 6218  
    10. 21182 8495 26533  
    11. 24534 8485 24987  
    12. 29942 1816 4658  
    13. [root@localhost tmp]# awk 'BEGIN{10000*srand();} {printf "%s %s\n", rand(), $0}' t | sort -k1n | awk '{gsub($1FS,""); print $0}'  
    14. 11646 4268 18112  
    15. 4138 28425 21201  
    16. 5076 20742 2021  
    17. 21182 8495 26533  
    18. 129 32444 4962  
    19. 149 19841 3307  
    20. 2327 21849 3066  
    21. 24534 8485 24987  
    22. 16553 16363 6218  
    23. 29942 1816 4658  
    24. [root@localhost tmp]#   


    几个备忘点: 
    1,for i in {1..10}; 数字循环 
    2,$RANDOM shell内置获取随机数 
    3,srand(); rand()在awk内获取随机数 
    4,gsub替换文本 
    展开全文
  • 命令介绍: sort :将文本文件内容加以排序。 sort -u [file] = sort [file] | uniq (去重) 参数说明 -b 忽略每行前面开始出的空格字符 -c 检查文件是否已经按照顺序排序 -d 排序时...
  • 1、ext2文件系统 示意图:Block(块): 物理磁盘是由一个个的区(所谓的扇区)连接成一片,每个区是 512 字节。为了能有组织,有计划的使用磁盘,设计者把连续若干个(比如2个,4个,8个)区连成一组,抽象出 block...
  • linux下sort命令使用详解---linux将文本文件内容加以排序命令时间:2010-06-10 21:06来源:未知作者:Linux安全网点击:372 次功 能说明:将文本文件内容加以排序。 语 法: sort [-bcdfimMnr][-o输出文件...
  • Linux 设备文件简介

    2019-03-18 17:47:01
    随着 Udev 的广泛使用,Linux 发行版的智能程度越来越高,许多 Linux 新用户 /dev 目录下的东西变得不再熟悉,有时候遇见问题就会抓狂。 Linux 中的设备按照存取方式的不同,可以分为两种: 字符设备 无缓冲且...
  • 实例图示: step by step: [root@subversion ~]# man df [root@subversion ~]# df -T -h 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 ext3 446G 376G 48G 89% / /...
  • ①sort命令 —— 对文件进行排序 sort实战 ②uniq命令 —— 去除重复行 uniq实战 ③join命令 —— 两个文件拼接 join实战     ①sort命令 —— 对文件进行排序 &gt;&gt;&gt;默认情况下,...
  • 以后这个系列的每次就浓缩一下只推送一个命令~sortsort命令是帮我们依据不同的数据类型进行排序,在Linux里非常常用的一个命令sort命令使用介绍: 命令格式:sort [-bcfMnrtk][源文件][-o 输出文件] 命令功能:依据...
  • 首先使用man命令或—help参数可以看所有命令的帮助,请大家善加利用 例如: #man cd #cp --help 另外linux中 > 表示标准输出重定向到其他地方例如文件: # ll >a.txt ll命令应该在屏幕显示的信息写入文件a....
  • 简单的总结一下常用的一些实用的Linux文本操作命令,包括wc(统计)、cut(切分)、sort(排序)、uniq(去重)、grep(查找)、sed(替换、插入、删除)、awk(文本分析)。回到顶部1.统计命令——wc 统计文件里面有多少单词,...
  • 常用的linux命令记录

    2019-09-11 18:55:52
    文章目录sortGNU Parallel命令nohup后台执行脚本awk取出所有包含某个字段的行grep和egrep的区别shuf对文件乱序date相关的命令 sort 参考链接:https://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html GNU...
  • linux之sort命令

    2019-11-09 02:27:35
    1 sort命令的参数 sort 参数(可以省略) file 具体参数如下 -b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含) -c:检查文件是否已经按照顺序...
  • Linux命令之sort的使用

    2011-11-28 00:02:32
    linux下sort命令使用详解---linux将文本文件内容加以排序命令 时间:2010-06-10 21:06来源:未知 作者:Linux安全网 点击: 372 次 功能说明:将文本文件内容加以排序。 语 法: sort [-bcdfimMnr][-o输出文件][-...
  • linux shuf 命令

    2018-09-21 15:40:32
    今天发现可以使用 linux 命令就能解决,而且效率很高,这个命令就是 shuf。 下载 shuf 命令是 coreutils 包中的命令,所以需要下载,可以使用 yum 或者 brew 工具下载 yum install coreutils or brew install...
1 2 3 4 5 ... 20
收藏数 4,909
精华内容 1,963