awk處理多行文字的記錄

2022-05-03 02:45:10 字數 841 閱讀 8295

awk使用內建的變數rs將輸入流拆分為乙個個記錄(record),使用fs將乙個記錄拆分為若干個域(field)。rs的預設值為\n,fs的預設值為空白字元。有時候會出現乙個記錄跨越多行的情況,這時就需要手動設定rs為記錄中不會出現的字元(否則會將乙個記錄拆分為兩個記錄),如空行(rs=」」)、分頁符(rs=」\f」)、或者乙個正規表示式(posix只支援單個字元,正規表示式需要gawk)。

乙個示例文字如下:

spawn ssh [email protected]#36000
version 123
text nothing
spawn ssh [email protected]#36000
version 456
text nothing
spawn ssh [email protected]#36000
version 123
text some text
spawn ssh [email protected]#36000
version 456
text another text
每個spawn語句構成了乙個記錄,因此此處使用rs=」spawn」。為了提取version為123的機器的ip,可以使用如下的指令碼

#!/usr/bin/awk -f
begin
}
執行結果如下

james@debian:~$ ./process.awk test.txt
10.10.10.1
10.10.10.3

awk多行記錄

到目前為止,本教程用作例子的所有資料檔案中,每條記錄都自成一行。而在下面這個名為checkbook的示例資料檔案中,記錄之間用空行分隔,同一記錄的字段之間則用換行符分隔。要處理這個檔案,就必須將記錄分隔符 rs 設為空值,而把字段分隔符 fs 設為換行符。cat checkbook 1 1 04 1...

awk進行文字處理

1 awk的內建變數 awk 所內建的字段變數及其涵意如下 字段變數 含義 0 一字串,其內容為目前 awk 所讀入的資料行.1 0 上第乙個欄位的資料.2 0 上第二個欄位的資料.其餘類推 內建變數 含義nf number of fields 為一整數,其值表 0上所存在的字段數目.nr numb...

vue多行文字溢位處理

在vue多行文字溢位的問題,工作中需要相容火狐,ie,和谷歌,新增文字kit字首的那種方式火狐和ie不相容,找到一種萬能的方法,如下 mounted fn.xdlines.defaults,options var this this for var k 0 k this.length k var s...