天天看點

常用unix指令用法 - cut和paste

指令名稱:cut

功能介紹:分割出指定文本檔案裡符合要求的内容

文法格式:cut -c num1-num2 -f m-n filename

常用參數說明:

-c num1-num2 表示顯示每一行的第m個字元到第n個字元;

-f m-n 表示顯示第m欄和第n欄(使用tab分隔)。

指令使用執行個體:

1.列印文本example開頭算起前6個字元:

     $ cut -c 0-6 example    cat example

test2

this is test1

shell>> cut -c0-6 example ## print 開頭算起前 6 個字元

test2

this   i

2.一個文本file内容為:

   ---------file-----------

  liubi 23 14000

  ---------file-----------

   顯示第1欄和第3欄:

     # cut -f 1,3 file

  liubi 14000 cut用來從标準輸入或文本檔案中剪切列或域。剪切文本可以将之粘貼到一個文本檔案。

cut一般格式為:

cut [options] file1 file2

下面介紹其可用選項:

-c list 指定剪切字元數。

-f field 指定剪切域數。

-d 指定與空格和tab鍵不同的域分隔符。

-c 用來指定剪切範圍,如下所示:

        -c1,5-7 剪切第1個字元,然後是第5到第7個字元。

        -c1-50 剪切前50個字元。

-f 格式與-c相同。

        -f1,5 剪切第1域,第5域。

        -f1,10-12 剪切第1域,第10域到第12域。

例子:

wangnc> pg pers

P.Jones:Office Runner:ID897

S.Round:UNIX admin:ID666

L.Clip:Personl Chief:ID982

檔案中使用冒号“:”為域分隔符,故可用- d選項指定冒号,如-d:。如果有意觀察第3域,可以使用-f3。要抽取ID域。可使用指令如下:

wangnc> cut -d: -f3 pers

ID897

ID666

ID982

cut指令中剪切各域需用逗号分隔,如剪切域1和3,即名字和ID号,可以使用:

wangnc> cut -d: -f1,3 pers

P.Jones:ID897

S.Round:ID666

L.Clip:ID982

使用-c選項指定精确剪切數目。這種方法需确切知道開始及結束字元。通常我不用這種方法,除非在固定長度的域或檔案名上。

who -u | cut -c1-8

cut用來從文本檔案或标準輸出中抽取資料列或者域,然後再用paste可以将這些資料粘貼起來形成相關檔案。

粘貼兩個不同來源的資料時,首先需将其分類,并確定兩個檔案行數相同。paste将按行将不同檔案行資訊放在一行。預設情況下, paste連接配接時,用空格或tab鍵分隔新行中不同文本,除非指定-d選項,它将成為域分隔符。

paste格式為:

paste -d -s -file1 file2

選項含義如下:

-d 指定不同于空格或tab鍵的域分隔符。例如用@分隔域,使用- d @。

-s 将每個檔案合并成行而不是按行粘貼。

- 使用标準輸入。例如ls -l |paste ,意即隻在一列上顯示輸出。

例子:

wangnc> pg pas1

ID897

ID666

ID982

wangnc> pg pas2

P.Jones

S.Round

L.Clip

基本paste指令将pas1和pas2兩檔案粘貼成兩列:

wangnc> paste pas1 pas2

ID897   P.Jones

ID666   S.Round

ID982   L.Clip

通過交換檔案名即可指定哪一列先粘:

wangnc> paste pas2 pas1

P.Jones ID897

S.Round ID666

L.Clip ID982

要建立不同于空格或tab鍵的域分隔符,使用-d選項。下面的例子用冒号做域分隔符。

wangnc> paste -d: pas2 pas1

P.Jones:ID897

S.Round:ID666

L.Clip:ID982

要合并兩行,而不是按行粘貼,可以使用-s選項。下面的例子中,第一行粘貼為名字,第二行是ID号。

wangnc> paste -s pas1 pas2

ID897   ID666   ID982

P.Jones S.Round L.Clip

paste指令還有一個很有用的選項(-)。意即對每一個(-),從标準輸入中讀一次資料。使用空格作域分隔符,以一個4列格式顯示目錄清單。方法如下:

wangnc> ls /etc | paste -d" " - - - - - -

MANPATH PATH SHLIB_PATH SnmpAgent.d/ TIMEZONE X11/

acct/ aliases@ arp@ audeventstab audomon@ auto_master

auto_parms.log auto_parms.log.old backup@ backup.cfg bcheckrc@ bootpd@

bootpquery@ bootptab btmp@ catman@ checklist@ chroot@

clri@ cmcluster/ cmcluster.conf cmom.conf conf@ convertfs@

copyright cron@ csh.login d.cshrc@ d.exrc@ d.login@

也可以以一列格式顯示輸出:

wangnc> ls /etc | paste -d"" -

MANPATH

PATH

SHLIB_PATH

SnmpAgent.d/

TIMEZONE

X11/

acct/

aliases@

arp@

audeventstab

audomon@

auto_master

auto_parms.log

auto_parms.log.old

backup@

backup.cfg