awk,分隔符編輯擷取字元

2021-08-02 05:02:15 字數 1309 閱讀 7556

輸入字段分隔符:awk的內建變數fs中儲存了輸入字段分隔符的值。使用fs的預設值時,awk用空格或製表符來分隔字段,並且刪除各字段前多餘的空格或製表符。可以通過在begin語句中或命令列上賦值來改變fs的值。接下來我們就要在命令列上給fs指定乙個新的值。在命令列上改變fs的值需要使用-f選項,後面指定代表新分隔符的字元。

從命令列改變字段分隔符:範例中演示了如何使用-f選項在命令列中改變輸入字段分隔符。

$  cat employees

tom jones:

4424:

5/12/

66: 543354

mary adams:

5346:

11/4

/63:

28765

sally chang:

1654:

7/22/

54: 650000

billy black:

1683:

9/23/

44: 336500

$ awk 

-f: 

'/tom jones/' employees

tom jones 

4424

說明:-f選項用來在命令列重新設定輸入字段分隔符的值。當冒號緊跟在-f選項的後面時,awk 就會在檔案中查詢冒號,用以分隔字段。

使用多個字段分隔符:你可以指定多個輸入字段分隔符。如果有多個字元被用於字段分隔符fs,則fs對應是乙個正規表示式字串,並且被括在方括號中。下面的範例中,字段分隔符是空格、冒號或製表符。

$ awk 

-f'[ :\t]'

'' employees

tom jones 

4424

mary adams 

5346

sally chang 

1654

billy black 

1683

說明:-f選項後面跟了乙個位於方括號中的正規表示式,當遇到空格、冒號或製表符時,awk會把它當成字段分隔符。這個表示式兩頭加了引號,這樣就不會被shell當成自己的元字元來解釋(注意, shell使用方括號來進行檔名擴充套件)。

輸出字段分隔符:預設的輸出字段分隔符是單個空格,被儲存於awk的內建變數ofs中。此前的所有例子中,我們都是用print語句把輸出列印到螢幕上。因此,無論ofs如何設定,print語句中用於分隔欄位的逗號,在輸出時都被轉換成ofs的值。如果用ofs的預設值,則$1和$2之間的逗號會被轉換為單個空格,print函式列印這兩個字段時會在它們之間加乙個空格。

如果沒有用逗號來分隔字段,則輸出結果中的字段將堆在一起。另外,ofs的值可以改變。

參考資料:

二,awk分隔符

在前一篇文章中我們略微提到過 分隔符 但是並沒有細說,那麼我們今天就聊聊什麼是分隔符,awk有哪些分隔符,awk的預設分割符是空格,但是,這樣描述並不精確,因為,awk的分隔符還分為兩種,輸入分隔符 和 輸出分隔符 此處我們先將分隔符的概念列出,看不懂沒關係,我們會一一進行舉例,到時自然會明白。輸入...

SQL操作 根據分隔符擷取字串

小小小收藏夾 2009 09 08 09 52 59 閱讀558 字型大小 大中小 訂閱 示例 傳入多個email位址,通過每個email位址間的 分隔符,將各email位址分開。select from dbo.uf split aa aa.com,bb bb.com,cc cc.com,dd dd...

awk linux 分隔 awk多分隔符

awk的 f引數可以指定新的分隔符,有些時候可能需求指定多個分隔符,比如下面的內容 root n1 netstat an grep estab udp 0 0 192.168.1.120 35570 212.47.249.141 123 established udp 0 0 192.168.1.1...