Linux命令之cut

來源:互聯網
上載者:User

    今天系統中發現一個問題,在匯出EXCEL時,格式出現了混亂(其實就是中間有一條資料突然換行了)。

    剛開始以為是程式的問題,但是把程式調出來看了之後,沒發現什麼問題。後來上伺服器看資料檔案,一下就定位了問題所在(體會到了Linux命令的強大)。

    匯出EXCEL的邏輯是:將每條資料都儲存到文字檔中,每列以“|”進行切分。

    根據上面的描述可以知道,資料檔案中的每行都是比較規範的。剛開始考慮用awk命令來看下每行的資料,後來又想到了用cut命令。

    解決方案:利用cut將每行進行切割,然後取出每行的第一個欄位(當然也可以取出每個欄位),結果一對比,發現有一行資料格式明顯不對。然後去資料庫中查看該條記錄,發現該記錄中有個欄位有分行符號。前端沒有進行充分校正啊。執行的指令碼大概如下:

cut -d "|" -f1 filename

 

    總結:

cut -f FIELD_LIST filenameFIELD_LIST是需要顯示的列。它由列好組成,彼此之間用逗號分隔。例如:cut -f 2,3 filename這條命令將顯示第2列和第3列。

    定位字元是欄位或列的預設定界符。沒有定界符的行也會照原樣列印出來。要避免列印出這種不包含定界符的行,則可以使用cut的-s選項。

    要指定字元的定界符,使用-d選項。

    另外,cut命令還可以將一串字元作為列來顯示。

    -b 表示位元組;

    -c 表示字元;

    -f 表示定義欄位。

    下表列出了字元範圍的記法:

記法 範圍
N- 從第N個位元組,字元或欄位到行尾
N-M 從第N個位元組,字元或欄位到第M個(包括第M個在內)位元組、字元或欄位
-M 第1個位元組,字元或欄位到第M個(包括第M個在內)位元組、字元或欄位

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.