linux命令實踐 cut

2021-09-21 23:44:54 字數 1267 閱讀 1713

cut命令從檔案的每一行剪下位元組、字元和字段並將它們寫至標準輸出。它是以檔案的每一行作為處理物件的。 

命令格式:cut [選項] [範圍] 檔案。選項用來指定單位(位元組、字元還是字段),範圍指定選項的位置。 

常用的選項有:

-b:指定以位元組為單位顯示選中內容

-c:指定以字元為單位顯示選中內容

-f:指定以字段為單位顯示選中內容

-d:指定欄位的分界符,預設為製表符

其它的選項還有-n(僅和-b選項一起使用)、-s(僅和-f選項一起使用) 

範圍表示:

n:第n個位元組/字元/字段

n-:從第n個位元組/字元/欄位到最後乙個位元組/字元/字段

n-m:從第n個位元組/字元/欄位到第m個位元組/字元/字段,包括m

-m:從行的開頭到第m個位元組/字元/字段,包括m

-:從行開頭到行的最後

一、顯示passwd檔案中使用者名稱、密碼、使用者id和使用者目錄。

passwd檔案每行分為七列,以:為分隔符;這七列依次是使用者名稱、密碼、使用者id、組id、使用者描述、使用者目錄、使用者bash。由於passwd檔案內容過多,我們這裡用sed顯示其中的1-6行。  

二、顯示前兩個位元組或前兩個字元

看起來-b選項和-c選項沒什麼區別嘛。。其實不然,若檔案內容有漢字就可以看出來兩者的差別了。  三、

你是不是有些疑惑:漢字不是佔兩個位元組麼?cut -b 1-2 test1正好是顯示兩個位元組呀。。不錯,網上有很多資料都是這麼說的,而且它們會告訴你用cut -b 1-3就可以完整的顯示出乙個漢字,原因是cut -b 1-2以位元組為單位來處理,字元被「切成兩半」,因此無法正常顯示。

但是看了下面的,你或許會有不同的看法:

呵呵。。實在不好意思,貌似從utf-8到gb2312的編碼轉換沒有成功,但是沒關係,這不影響我們對為什麼cut -b 1-2不能正確顯示漢字的判斷。

這個就可以說明-b和-c選項的差別:我們用cut -b 1-2 test1時,沒有顯示出漢字,但是換成-c選項則可以顯示兩個漢字。這就是-b(位元組)和-c(字元)之間的區別。

我們看到編碼為utf-8的test1檔案第一行一共有5個漢字和3個字母,但wc -c統計是19個位元組,而編碼為iso-8859的test檔案統計為14個位元組!(wc -c在統計位元組時,結束符/換行符也作為乙個位元組。) 

這表明:在utf-8編碼下,漢字是佔三個位元組的!

大家可自己動手試驗一下,在utf-8編碼下,用cut -b 1-3可以顯示乙個漢字,而在其它編碼如gb2312、iso-8859等編碼下,用cut -b 1-2就可以顯示乙個漢字。

Linux 命令 cut 命令詳解

原文 為了控制滾屏,可以按ctrl s鍵,停止滾屏 按ctrl q鍵可以恢復滾屏。按ctrl c 中斷鍵可以終止該命令的執行,並且返回shell提示符狀態。cut 選項 引數 b 僅顯示行中指定直接範圍的內容 c 僅顯示行中指定範圍的字元 d 指定欄位的分隔符,預設的字段分隔符為 tab f 顯示指...

linux命令之cut命令

linux cut命令將行按指定的分隔符分割成多列。cut 命令從檔案的每一行剪下位元組 字元和字段並將這些位元組 字元和字段寫至標準輸出。如果不指定 file 引數,cut 命令將讀取標準輸入。必須指定 b c 或 f 標誌之一。cut分隔符必須是單個字元。以 etc password檔案和2.l...

Linux基礎命令 cut

cut 將檔案中每一行的指定內容顯示到標準輸出。此命令的適用範圍 redhat rhel ubuntu centos suse opensuse fedora。1 語法 cut 選項 file 2 選項列表 選項說明 version 顯示命令版本資訊 help 顯示幫助文件 b bytes list...