linux awk 中 RS,ORS,FS,OFS 區(qū)別與聯(lián)系

今天在學(xué)習(xí)時偶爾搜索到了這篇文章,覺得不錯,轉(zhuǎn)摘一下:https://blog.csdn.net/jesseen/article/details/7992929

總結(jié) RS,ORS,FS,OFS的區(qū)別和聯(lián)系羊壹。

一,RS與ORS

1齐婴,RS是記錄分隔符油猫,默認(rèn)的分隔符是\n,具體用法看下

[root@krlcgcms01 mytest]# cat test1     //測試文件
 111 222
 333 444
 555 666

2柠偶,RS默認(rèn)分割符\n

[root@krlcgcms01 mytest]# awk '{print $0}' test1  //awk 'BEGIN{RS="\n"}{print $0}' test1 這二個是一樣的
111 222
333 444
555 666

其實你可以把上面test1文件里的內(nèi)容理解為情妖,111 222\n333 444\n555 6666,利用\n進(jìn)行分割诱担≌敝ぃ看下一個例子

3,自定義RS分割符

[zhangy@localhost test]$ echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0,RT}'
 111 222 |
 333 444 |
 555 666

結(jié)合上面一個例子蔫仙,就很容易理解RS的用法了料睛。

4,RS也可能是正則表達(dá)式

[zhangy@localhost test]$ echo "111 222a333 444b555 666"|awk 'BEGIN{RS="[a-z]+"}{print $1,RS,RT}'
 111 [a-z]+ a
 333 [a-z]+ b
 555 [a-z]+

從例3和例4,我們可以發(fā)現(xiàn)一點恤煞,當(dāng)RT是利用RS匹配出來的內(nèi)容屎勘。如果RS是某個固定的值時,RT就是RS的內(nèi)容居扒。

5概漱,RS為空時

[zhangy@localhost test]$ cat -n test2
 1  111 222
 2
 3  333 444
 4  333 444
 5
 6
 7  555 666
[zhangy@localhost test]$ awk 'BEGIN{RS=""}{print $0}' test2
111 222
333 444
333 444
555 666
[zhangy@localhost test]$ awk 'BEGIN{RS="";}{print "<",$0,">"}' test2  //這個例子看著比較明顯
< 111 222 >
< 333 444     //這一行和下面一行,是一行
333 444 >
< 555 666 >

從這個例子喜喂,可以看出當(dāng)RS為空時瓤摧,awk會自動以多行來做為分割符

6玉吁,ORS記錄輸出分符符姻灶,默認(rèn)值是\n

把ORS理解成RS反過程,這樣更容易記憶和理解诈茧,看下面的例子产喉。

[zhangy@localhost test]$ awk 'BEGIN{ORS="\n"}{print $0}' test1  //awk '{print $0}' test1二者是一樣的
111 222
333 444
555 666
[zhangy@localhost test]$ awk 'BEGIN{ORS="|"}{print $0}' test1
111 222|333 444|555 666|

二,F(xiàn)S與OFS

1敢会,F(xiàn)S指定列分割符

[zhangy@localhost test]$ echo "111|222|333"|awk '{print $1}'
 111|222|333
[zhangy@localhost test]$ echo "111|222|333"|awk 'BEGIN{FS="|"}{print $1}'
 111

2曾沈,F(xiàn)S也可以用正則

[zhangy@localhost test]$ echo "111||222|333"|awk 'BEGIN{FS="[|]+"}{print $1}'
111

3,F(xiàn)S為空的時候

[zhangy@localhost test]$ echo "111|222|333"|awk 'BEGIN{FS=""}{NF++;print $0}'
1 1 1 | 2 2 2 | 3 3 3

當(dāng)FS為空的時候鸥昏,awk會把一行中的每個字符塞俱,當(dāng)成一列來處理

4吏垮,RS被設(shè)定成非\n時障涯,\n會成FS分割符中的一個

[zhangy@localhost test]$ cat test1
 111 222
 333 444
 555 666
[zhangy@localhost test]$ awk 'BEGIN{RS="444";}{print $2,$3}' test1
 222 333
 666

222和333之間是有一個\n的,當(dāng)RS設(shè)定成444后膳汪,222和333被認(rèn)定成同一行的二列了唯蝶,其實按常規(guī)思想是二行的一列才對

5遗嗽,OFS列輸出分隔符

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1,$2}' test1
 111|222
 333|444
 555|666
[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $1 OFS $2}' test1
 111|222
 333|444
 555|666

test1只有二列粘我,如果100列,都寫出來太麻煩了吧痹换。

[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{print $0}' test1
 111 222
 333 444
 555 666
[zhangy@localhost test]$ awk 'BEGIN{OFS="|";}{NF=NF;print $0}' test1
 111|222
 333|444
 555|666

為什么第二種方法中的OFS生效呢征字?個人覺得,awk覺查到列有所變化時娇豫,就會讓OFS生效匙姜,沒變化直接輸出了。

</article>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冯痢,一起剝皮案震驚了整個濱河市氮昧,隨后出現(xiàn)的幾起案子或详,更是在濱河造成了極大的恐慌,老刑警劉巖郭计,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霸琴,死亡現(xiàn)場離奇詭異,居然都是意外死亡昭伸,警方通過查閱死者的電腦和手機(jī)梧乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庐杨,“玉大人选调,你說我怎么就攤上這事×榉荩” “怎么了仁堪?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長填渠。 經(jīng)常有香客問我弦聂,道長,這世上最難降的妖魔是什么氛什? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任莺葫,我火速辦了婚禮,結(jié)果婚禮上枪眉,老公的妹妹穿的比我還像新娘捺檬。我一直安慰自己,他們只是感情好贸铜,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布堡纬。 她就那樣靜靜地躺著,像睡著了一般蒿秦。 火紅的嫁衣襯著肌膚如雪烤镐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天渤早,我揣著相機(jī)與錄音职车,去河邊找鬼。 笑死鹊杖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扛芽。 我是一名探鬼主播骂蓖,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼川尖!你這毒婦竟也來了登下?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎被芳,沒想到半個月后缰贝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡畔濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年剩晴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侵状。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赞弥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出趣兄,到底是詐尸還是另有隱情绽左,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布艇潭,位于F島的核電站拼窥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹋凝。R本人自食惡果不足惜闯团,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仙粱。 院中可真熱鬧房交,春花似錦、人聲如沸伐割。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隔心。三九已至白群,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硬霍,已是汗流浹背帜慢。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留唯卖,地道東北人粱玲。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像拜轨,于是被迫代替她去往敵國和親抽减。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • awk介紹awk變量printf命令:實現(xiàn)格式化輸出操作符awk patternawk actionawk數(shù)組aw...
    哈嘍別樣閱讀 1,560評論 0 4
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,197評論 2 25
  • AWK將文件shuffle time awk 'BEGIN{srand()}{b[rand()NR]=$0}END...
    MiracleJQ閱讀 624評論 0 2
  • awk:報告生成器橄碾,格式化文本輸出 內(nèi)容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 a...
    BossHuang閱讀 1,453評論 0 9
  • linux awk命令詳解 來源:ggjucheng 鏈接:http://www.cnblogs.com/ggju...
    meng_philip123閱讀 857評論 0 1