Linux下 对文件行数打乱(乱序排列)

 更新: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行。

原文地址:https://www.cnblogs.com/hozhangel/p/8926493.html