提前認識軟體開發(22) shell指令碼中的檔案操作

來源:互聯網
上載者:User

編寫shell指令碼時,經常會涉及到對檔案的操作,比如從檔案中讀取一行資料、向檔案追加一行資料等。完成檔案讀寫操作的方法有很多,瞭解各種命令下檔案操作的執行情況,有助於開發人員在不同使用情境下選擇合適的命令。

本文以實際的shell指令碼為例,介紹了對檔案進行操作的不同方法,為相關開發工作提供了參考。

一、概述

在某些軟體項目的需求文檔中,要求程式一次性讀或寫的資料規模較大,可達1000萬行級,這就涉及到對程式執行方法和效率等的考慮。

本文比較了不同shell命令在對檔案進行讀或寫操作過程中執行效率的不同,為大資料下檔案操作命令的選擇提供了參考。

二、檔案比較演算法流程介紹

檔案比較演算法的流程如圖1所示。

圖1 檔案比較演算法的流程

三、不同的檔案內容讀取命令

1. sed逐行讀取資料

該命令在一個迴圈裡,依次讀取檔案的每一行內容。

(1) 讀取方法

舉例:讀取f1檔案的第一行:sed –n 1p f1

讀取f1檔案的第二行:sed –n 2p f1

該命令實現簡單,邏輯清晰。

(2) 效能問題

如果用該命令進行大資料量(在十萬數量級以上)的讀取,發現程式執行效率低下,耗時較多(具體參見第3小節中的原因分析)。

2. 運用exec及read讀取檔案內容

(1) 開啟讀檔案控制代碼

exec 3<testfile

其中,3是檔案描述符(檔案控制代碼),在linux取大於等於3的值(在aix下只能為[3,9]之間的值),該文描述符後續用來讀取一行資料和關閉檔案;testfile是要開啟的檔案。

(2) 讀取一行資料

read str<&3

其中,3表示從該檔案描述符讀取資料;str是變數,用於儲存從檔案中讀取的行資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.