溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

awk之RS、ORS與FS、OFS

發(fā)布時(shí)間:2020-07-22 01:31:50 來(lái)源:網(wǎng)絡(luò) 閱讀:524 作者:轉(zhuǎn)身撞墻角 欄目:開(kāi)發(fā)技術(shù)

RS:Record Separator,記錄分隔符

ORS:Output Record Separate,輸出當(dāng)前記錄分隔符

FS:Field Separator,字段分隔符

OFS:Out of Field Separator,輸出字段分隔符

PS:RS、ORS、FS、OFS的英文解釋絕不是這樣的,這里只是解釋清楚。建議去閱讀awk的英文讀物,其中解釋了縮寫(xiě)的含義。

什么是field(字段),什么是record(記錄行)?

示例:

1.txt

  1. i am a student.

  2. i like to swim

  3. hello moto

1代表第一個(gè)記錄行,2代表第二個(gè)記錄行,3代表第三個(gè)記錄行。通過(guò)觀察我們可以知道總共有3個(gè)記錄行(record)。

看看第一行:“i am a student”,這一行的每個(gè)單詞都是一個(gè)字段(field)。“i”是一個(gè)字段,“am”是一個(gè)字段,“a”是一個(gè)字段,“student”是一個(gè)字段,該行總共有4個(gè)字段。

RS與ORS

RS:記錄行分隔符

示例:

 

1.txt

  1. a\n

  2. b\n

  3. c\n

  4. d\n

  5. e\n

該文本總共有5行,每一行都有一個(gè)換行符“\n”。所以每行記錄都是以“\n”為一個(gè)(換行的)標(biāo)志。

可以用一下方法來(lái)理解:

找到某某標(biāo)志,讓每個(gè)某某后的內(nèi)容重新變成一行

示例

1.txt

a|b|c

代碼:awk 'BEGIN{ RS="|"; } { print $0 }'

a

b

b

ORS:可以看成RS的逆向過(guò)程

示例

1.txt

a

b

c

可以這樣理解:

觀察每一行的“換行符號(hào)”,然后將“換行符號(hào)”替換成你想要的符號(hào)。

awk 'BEGIN{ ORS="----" }{ print $0 }' 1.txt

a----b----c----

FS:字段分隔符

FS默認(rèn)值為“ (空格)”,如“hello moto”.

在“hello moto”中有一個(gè)空格,空格就是hello與moto的分隔符(separator),而hello與moto就為字段(files)。awk以空格來(lái)區(qū)分。

在看看“i----love----you”,如果我們用命令“awk “{ print $1 }””會(huì)看到結(jié)果為:

i----love----you

如果想打印出三個(gè)字母,通過(guò)觀察可發(fā)現(xiàn)“----”為分隔符。

awk 'BEGIN{ FS="----";}{ print $1,$2,$3 }' filename

i love you

OFS:輸出的字段分隔符。

這么解釋吧,如上例中“i----love----you”,“----”為分隔符(FS),如果我們想改為用其他符號(hào)顯示可以這樣:

awk 'BEGIN{ FS="----";OFS="*****" }{ print $1,$2,$3 }' filename

i*****love*****you

 

其實(shí)OFS還有一個(gè)例子
echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
結(jié)果
1.abc

 

PS:RS與ORS可以說(shuō)成是一個(gè)互逆的過(guò)程()也可以看成一個(gè)替換的過(guò)程,但是看成互逆的過(guò)程比較好理解;FS與OFS就是一個(gè)替換的過(guò)程。

Have a nice day!!!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI