1. 程式人生 > >sed、cut和awk命令的使用

sed、cut和awk命令的使用



sed命令的使用

語法

sed[-n] ‘editing command’ [file…]

sed[-n] –e ‘editing command’ [file…]

sed[-n] –f scripting-file … [file…]

-e ‘editing command’:editingcommand使用在輸入資料上。當有多個命令需要使用時,就必須使用-e

-f script-file:script-file中讀取編輯命令。當有多個命令需要執行時,此選項相當有用。

-n:不是每個最後已修改結果行都正常列印,而是顯示以p指定的行

若無-e-f選項,sed會將第一個引數看作是要使用的

editing command.

editing command的幾種形式

1s分隔符原始文字分隔符替換文字分隔符

例如s;/home/tolstoy/;/home/lt/;表示將/home/tolstoy替換成/home/lt

2s分隔符原始文字分隔符 &替換文字分隔符

s;\(/home\)/tolstoy/;&\1/lt/;表示將/home/tolstoy替換成/home/tolstoy//home/lt

3s分隔符原始文字分隔符替換文字分隔符 g

echo a b c abc | sed ‘s/a/A/’表示將’a b c abc’4、所有的a替換成A

4/模式/s 分隔符原始文字分隔符

替換文字分隔符

表示針對匹配模式的行作處理

5sed –n ’10,42p’foo.xml表示列印foo.xml的第1042行的資料

6sed ‘/foo/,/bar/s/baz/quux/g’表示從含有foo的行開始,再匹配是否有bar的行,再將匹配後的結果中,有baz的全換成quux

7sed ‘/used/!s/new/used/g’表示將沒有used的每個行裡所有new替換成used

8、sed '/used/!d'表示把不匹配的刪除

cut的使用

語法

cut–c list [file…]

cut–f list [-d delim] [file…]

-c list:以字元為主,執行剪下的操作。

List為字元編號或一段範圍的列表(以逗點隔開),例如1,3,5-12,42

-d delim:通過-f選項,使用delim作為定界符。預設的定界符為製表字元

-f list:以欄位為主,作剪下的操作。list欄位編號或一段範圍的列表(以逗號分隔)

awk命令的使用

語法為

awk‘program’ [file…]

awk讀取命令列上所指定的各個檔案,一次讀取一條記錄,再針對第一行,應用程式所指定的命令。awk程式基本架構為

pattern{action}

pattern可以是任何表示式,但是在單命令列程式裡,通常是由斜槓括起來的EREaction為任意的awk語句,但是在單命令列程式時,通常是一個print語句

patternaction都能省略。省略pattern,則會對每一條輸入記錄執行action,省略action則等同於{print},將顯示整條記錄

awk設計的重點在欄位與記錄上:awk讀取輸入記錄,然後自動將各個記錄切分成欄位,將第條記錄內的欄位數目,儲存到內建變數NF。預設以空白分隔欄位,如空格與製表字元。

  1. 設定欄位分隔符

    -F選項修改欄位分隔符,會自動設定FS變數

2、起始與清除

BEGINEND,提供awk程式起始與清除操作。