sed & awk & tr

sed & awk & tr

sed

awk

awk 是一種編程語(yǔ)言,用于在linux/unix下對(duì)文本和數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)可以來(lái)自標(biāo)準(zhǔn)輸入(stdin)、一個(gè)或多個(gè)文件,或其它命令的輸出。

awk 一般需要一個(gè)輸入,或者輸出可以是echo 或者ls 或者是后面帶個(gè)文件輸出

語(yǔ)法一啊不能是 awk [命令] file 或者 輸出命令 | awk [命令]

主要命令是 awk 'BEGIN{cmd} pattern [cmd] END[cmd]',一辦begin會(huì)用來(lái)賦值,pattern里面會(huì)做計(jì)算,順便輸出,模式就輸出,否則需要自己定義。end一般會(huì)用來(lái)打印信息

awk '! a[$0]++' 去重

[root@VM_39_7_centos ~]# cat bb.txt
111
222
111
222
444

#awk '! a[$0]++' bb.txt 去重

#$0 表示第一列
#a[$0]表述數(shù)組內(nèi)容是$0的
#!取反
#0默認(rèn)輸出

第一行:a[$0] 就是a[111],此時(shí)a[111]是0,通過(guò)i++后a[111]是0,取反后是1,默認(rèn)輸出,但此時(shí)a[111]已經(jīng)是1
第二行:a[$0] 就是a[222],此時(shí)a[222]是0,通過(guò)i++后a[222]是0,取反后是1,默認(rèn)輸出,但此時(shí)a[222]已經(jīng)是1
第三行:a[$0] 就是a[111],此時(shí)a[111]是1,通過(guò)i++后a[111]是1,取反后是0,默認(rèn)不輸出,但此時(shí)a[111]已經(jīng)是2
·
·
·

rel https://blog.csdn.net/qq_31555951/article/details/106616163
[root@VM_39_7_centos ~]# awk '{print a[$0],!a[$0]++,a[$0],!a[$0],$0}' file
  1 1 0 111
  1 1 0 222
  1 1 0 555
  1 1 0 333
1 0 2 0 111
1 0 2 0 222
  1 1 0 444
2 0 3 0 222
1 0 2 0 555

[root@VM_39_7_centos ~]# more file
111
222
555
333
111
222
444
222
555

內(nèi)置變量

FS:輸入字符風(fēng)隔符,默認(rèn)為空白字符
OFS:輸出字段分隔符,默認(rèn)為空白 字符
RS:輸入記錄分隔符(輸入換行符),指定輸入時(shí)的額換行符
NF:number of Field,當(dāng)前行的字段的個(gè)數(shù),字段數(shù)量
NR:行號(hào),當(dāng)前處理的文本行的行號(hào)
FNR:各文件分別計(jì)數(shù)的行號(hào)
FILENAME:當(dāng)前文件名
ARGC:命令行參數(shù)的個(gè)數(shù)
ARGV:數(shù)組,保存的是命令行所給定的各參數(shù)

比如:
echo -e '12:23:34:45' | awk -F:  '{print $2}'

tr

  1. tr,translate的簡(jiǎn)寫(xiě),主要用于壓縮重復(fù)字符,刪除文件中的控制字符以及進(jìn)行字符轉(zhuǎn)換操作。
-s
-d

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容