日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux shell 切割文件,linux shell 将文件按照行数以及顺序拆分成多个文件

發布時間:2023/12/15 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux shell 切割文件,linux shell 将文件按照行数以及顺序拆分成多个文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

awk -vf=3 -vl="`wc -l file`" 'BEGIN{p=int(l/f);q=(l%f);for(n=1;n<=f;n++)a[n]=n*p+((n<=q)?++x:x)}{if(NR>a[i])i++;print >"file"i}' file

這里的-vf=3 表示將file拆分成3個文件,另外還有一種解法,如下所示:

#!/bin/bash

if [ $# -ne 2 ];then

echo "U: sh $0 [file] [fnumber]"

echo "E: sh $0 myfile 3"

exit 1

fi

srcfile=$1 #原始文件

fnumber=$2 #需要拆分的文件個數

eval $(cat $srcfile | awk -vn=$fnumber 'END{print "total="NR,"fline="int(NR/n),"extra="NR%n,"cline="int(NR/n)+1}')

# total:原始文件總行數

# fline:拆分文件平均行數

# extra:需要擴展行數的文件個數

# cline:當前拆分文件行數

i=1

iline=1

while true;do

filename="file$i"

# 按行的順序分別寫入文件中

if [ $extra = 0 ];then

echo "$filename lines: $fline"

tail -n +$iline $srcfile | head -n $fline > $filename

iline=$((iline+fline))

else

echo "$filename lines: $cline"

tail -n +$iline $srcfile | head -n $cline > $filename

iline=$((iline+cline))

extra=$((extra-1))

fi

((i++))

[ $iline -ge $total ] && exit 0

done

總結

以上是生活随笔為你收集整理的linux shell 切割文件,linux shell 将文件按照行数以及顺序拆分成多个文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。