qt 快速按行讀取文件_這是知識點之Linux下分割文件并保留文件頭

點擊上方"開發者的花花世界",選擇"設為星標"技術干貨不定時送達!

這是一個知識點

方便快捷的給結構化數據文件分割大小并保留文件的表頭,幾十個G的結構化文件不僅閱讀編輯麻煩,而且使用受限,因此高效的分割成小文件并保留頭行

1、分割文件

在Linux下,切割和合并文件可以使用split和cat命令來實現。在Windows下,安裝Git Bash也可以使用split和cat命令。分割文件的命令是split,通過輸入split --help可以查詢幫助信息。假設現在有個6GB大小的文件test.log,這里簡單介紹下幾種分割的方式:

按大小分割文件(此處不推薦)

split -b 500m   文件 newfile

每個文件大小500m,生成的新文件的文件名是newfile后面加上按照aa,ab,ac……來排序的 比如文件有1.4G,那么會切割出3個文件,文件名分別是newfileaa,newfileab,newfileac,沒有擴展名 新文件名可以不設置,系統默認新文件以字母x開頭,也就是說,如果命令是:

split -b 500m log.txt

那么文件名就是xaa,xab,axc 速度比windows下的那些什么切割軟件快太多 同時,-C參數表示按照所有行數加起來的最大字節數進行分割,同樣可以使用k或者m作為單位,其實效果和上邊的-b差不多,只是在切割時將盡量維持每行的完整性。另外切開的文件還能再合起來,命令是:

cat newfile* > orifile

此處不推薦的原因是因為結構化文件按大小分割會造成結構破壞,故推薦按行分割

按行分割文件

split -l

split -l 5000   文件 newfile

-l參數表示按照行數進行分割,即一個小文件中最多有多少行,-l number可以縮寫成-number,上邊的命令表示按照5000行一個小文件進行分割。

推薦按行分割文件,能保留行的完整性不破壞結構化文件的結構

2、給分割后的文件插入表頭行

Sed是一款流編輯工具,用來對文本進行過濾與替換操作,特別是當你想要對幾十個配置文件做統一修改時,你會感受到Sed的魅力!Sed通過一次僅讀取一行內容來對某些指令進行處理后輸出,所以Sed更適合于處理大數據文件。首先,Sed通過文件或管道讀取文件內容,但Sed默認并不直接修改源文件,而是將讀入的內容復制到緩沖區中,我們稱之為模式空間(pattern space),所有的指令操作都是在模式空間中進行的,然后Sed根據相應的指令對模式空間中的內容進行處理并輸出結果,默認輸出至標準輸出(即屏幕上)。

Sed從文件中讀取數據,如果沒有輸入文件,則默認對標準輸入進程數據進行處理,腳本指令是第一個非“-”開頭的參數,具體語法格式如下:

sed [選項]...{腳本指令} [輸入文件]
選項含義
--version顯示sed版本
--help顯示幫助文檔
-n,--quit,--silent靜默輸出,默認情況下,sed程序在所有的腳本指令執行完畢后,將自動打印模式空間中的內容,該選項可以屏蔽自動打印。
-e script允許多個腳本指令被執行
-f script-file從文件中讀取腳本指令,對編寫自動腳本程序很實用。
-i,--in-place慎用,該選項將直接修改源文件
l,N該選項指令l指令可以輸出的行長度,l指令為輸出非打印字符。
--posix禁用GNU sed擴展功能
-r在腳本指令中使用擴展正則表達式
-s,--separate默認情況下,sed將把輸入的多個文件名作為一個長的連續的輸入流,而GNU sed則允許把它們當作單獨的文件
-u,--unbuffered最低限度的緩存輸入和輸出

因此,給分割后的文件加表頭的方法是:

sed -i "1i 字段,字段,字段,字段"  文件

1i表示第一行之前

3、批量給分割后的文件增加后綴名

由于分割后的文件默認是沒有后綴名的,故需要增加后綴名 非常簡單,例如CSV后綴

for i in *do mv $i $i".csv"done

完成


關注Github:1/2極客[1]

關注博客:御前提筆小書童[2]

關注網站:HuMingfeng[3]

關注公眾號:開發者的花花世界

03ffc6e23b1e490de823b3e2aa23f7e2.png

References

[1]?1/2極客:?https://github.com/humingfeng[2]?御前提筆小書童:?https://blog.csdn.net/qq_22260641[3]?HuMingfeng:?https://royalscholar.cn

喜歡就點個"在看"唄^_^

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276509.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276509.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mono 調用windows webService

1. 實現linux mono Develop中調用windows 中的webService l linux 與 windows 在一個局域網的網段中 l windows 的IIs中發布webService 2. windows 中的設置 l webService 的代碼 using System; using System.Collections.Generic; using System.Linq; using S…

Linux 內存機制

轉載鏈接:http://blog.csdn.net/tianlesoftware/article/details/5463790 一. 內存使用說明 Free 命令相對于top 提供了更簡潔的查看系統內存使用情況: [rootrac1 ~]# free total used free shared buffers cached Mem: …

network中的請求信息,headers中的每一項分別是什么意義?

這里是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【network中的請求信息,headers中的每…

學習 sentry 源碼整體架構,打造屬于自己的前端異常監控SDK

前言這是學習源碼整體架構第四篇。整體架構這詞語好像有點大,姑且就算是源碼整體結構吧,主要就是學習是代碼整體結構,不深究其他不是主線的具體函數的實現。文章學習的是打包整合后的代碼,不是實際倉庫中的拆分的代碼。其余三篇分…

巴西龜吃什么

1、活蝦,哈哈,巴西龜最喜歡的食物,超市很多雞尾蝦買的,就那種,要活的,鍛煉它們的天性,一次一只可以吃一、兩天; 2、蚶子,貝殼類,活的,整個扔進去&…

綁定dictionary 給定關鍵字不再字典中_VBA代碼集錦-利用字典做兩列數據的對比并對齊...

源數據:代碼:Sub 對比()Dim arr, brr, crrDim i, j, n, lastrowA, lastrowB As Integer建立字典對象Set d CreateObject("scripting.dictionary")獲取數據區域最后一行的行數lastrowA Sheets("對比對齊兩列數據").Cells(Rows.Coun…

linux啟動時掛載rootfs的幾種方式 .

轉載鏈接:http://blog.csdn.net/zuokong/article/details/9022707 根文件系統(在樣例錯誤消息中名為 rootfs)是 Linux 的最基本的組件。根文件系統包含支持完整的 Linux 系統所需的所有內容。它包含所有應用程序、配置、設備、數據等 Linux 中…

PHP 手冊

by:Mehdi AchourFriedhelm BetzAntony DovgalNuno LopesHannes MagnussonGeorg RichterDamien SeguyJakub Vrana其他貢獻者2018-06-19Edited By: Peter Cowburn中文翻譯人員:肖盛文洪建家穆少磊宋琪黃嘯宇王遠之肖理達喬楚戴劼褚兆瑋周夢康袁玉強段小強© 1997-…

前端使用puppeteer 爬蟲生成《React.js 小書》PDF并合并

前端也可以爬蟲,寫于2018年08月29日,現在發布到微信公眾號申明原創。掘金若川 本文章鏈接:https://juejin.im/post/5b86732451882542af1c80821、 puppeteer 是什么?puppeteer: Google 官方出品的 headless Chrome node 庫puppetee…

蜘蛛與佛的故事

最近閉關,空面四壁,窗外層巒疊嶂,窗臺上只有一盆花每日陪著我,朋友們都說我要成佛了,想想也是! 于是在閉關即將結束的時候找了一篇佛的故事送給自己,希望自己能夠頓悟一些"禪"機。 從前,有一座圓音寺,每天都…

信息安全管理與評估_計算機工程學院教師參加“信息安全管理與評估賽項”說明會...

看了就要關注我,喵嗚~2019年3月15日下午,2019年陜西省高等職業院校技能大賽“信息安全管理與評估賽項說明會”在咸陽職業技術學院舉行。出席本次會儀的有咸陽職業技術學院教務處長楊新宇、神州數碼范永強經理、神州數碼信息安全工程師高峰和各院校指導教…

haproxy概念和負載均衡

https://pan.baidu.com/s/1Sq2aJ35zrW2Xn7Th9j7oOA //軟件百度網盤連接 在80.100虛擬機上 systemctl stop firewalld //關閉防火墻 setenforce 0 //關閉監控 yum install lrz* -y //安裝上傳軟件 tar xf haproxy-1.5.15.tar.gz -C /opt/ //解壓壓縮包到/opt/ cd /op…

PHP用戶注冊郵箱驗證激活帳號

轉載鏈接:http://www.helloweba.com/view-blog-228.html 本文將結合實例,講解如何使用PHPMysql完成注冊帳號、發送激活郵件、驗證激活帳號、處理URL鏈接過期的功能。 業務流程 1、用戶提交注冊信息。 2、寫入數據庫,此時帳號狀態未激活。 …

知乎問答:一年內的前端看不懂前端框架源碼怎么辦?

知乎問答:一年內的前端看不懂前端框架源碼怎么辦?以下是我的回答,閱讀量 1000。現在轉載到微信公眾號中。鏈接:https://www.zhihu.com/question/350289336/answer/910970733其他回答的已經很好了。剛好最近在寫學習源碼整體架構系…

幫自己發個求職簡歷

幫自己發個求職簡歷 發個求職信息。本人擅長Web開發,尤其擅長Flex,愿從事Web開發,最好是Web前端開發,下面是我的詳細個人簡歷: 個人信息: 姓名:伍國耀 年齡:23 性別:男 專…

python函數 global_**Python的函數參數傳遞 和 global

函數的參數到底是傳遞的一份復制的值,還是對內存的引用?我們看下面一段代碼:a []def fun(x):x.append(1)fun(a)print(a)想想一下:如果傳遞的是一份復制的值,那么列表a應該是不會變化的,還是空列表&#xf…

冷啟動問題:如何構建你的機器學習組合?

作為即將告別大學的機器學習畢業狗的你,會不會有種迷茫的感覺?你知道 HR 最看重的是什么嗎?在求職季到來之前,畢業狗要怎么做,才能受到 HR 的青睞、拿到心儀的 Offer 呢?負責幫助應屆生找到機器學習工作的 …

JavaScript 對象所有API解析【2020版】

寫于 2017年08月20日,雖然是2017年寫的文章,但現在即將2020年依舊不過時,現在補充了2019年新增的ES10 Object.fromEntries()。發到公眾號申明原創。若川順便在此提前祝大家:2020年更上一層樓。近日發現有挺多人對對象基礎API不熟悉…

javascript操作符之new 也瘋狂 (2)

JavaScript本是一種基于原形的(prototypal)語言,但它的“new”操作符看起來有點像經典語言。這迷惑了廣大程序員們,并導致了很多使用上的問題。 在JavaScript中,不要用到new Object()這種操作,該用{ }來代替…

python中if語句缺省else_9_【Python學習分享文章】_if(條件語句)

【Python學習分享文章】_if(條件語句)_logicalJudgement介紹及基本操作綜述計算機的“條件語句”和生活中的“條件成立”是不一樣的。一個生活中的例子如果被計算機執行則是如下段子:老婆讓程序員老公去買蘋果,說:“去水果店買5個蘋果&#x…