shell awk sed tr grep 语法汇总
生活随笔
收集整理的這篇文章主要介紹了
shell awk sed tr grep 语法汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:http://www.cnblogs.com/wajika/p/6374043.html
tr?基本語法
??-c??????????#?用字符串1中字符集的補集替換此字符集,要求字符集為ASCII
??-d??????????#?刪除字符串1中所有輸入字符
??-s??????????#?刪除所有重復出現字符序列,只保留第一個:即將重復出現字符串壓縮為一個字符串
??[a-z]???????#?a-z內的字符組成的字符串
??[A-Z]???????#?A-Z內的字符組成的字符串
??[0-9]???????#?數字串
??\octal??????#?一個三位的八進制數,對應有效的ASCII字符
??[O*n]???????#?表示字符O重復出現指定次數n。因此[O*2]匹配OO的字符串?
???\b?Ctrl-H????\010????#?退格符
???\f?Ctrl-L????\014????#?走行換頁
???\n?Ctrl-J????\012????#?新行
???\r?Ctrl-M????\015????#?回車
???\t?Ctrl-I????\011????#?tab鍵
???\v?Ctrl-X????\030 tr?A-Z?a-z?????????????????????????????#?將所有大寫轉換成小寫字母
??tr?"?"?"\n"????????????????????????????#?將空格替換為換行
??tr?-s?"[\012]"?<?plan.txt??????????????#?刪除空行
??tr?-s?["\n"]?<?plan.txt????????????????#?刪除空行
??tr?-s?"[\015]"?"[\n]"?<?file???????????#?刪除文件中的^M,并代之以換行
??tr?-s?"[\r]"?"[\n]"?<?file?????????????#?刪除文件中的^M,并代之以換行
??tr?-s?"[:]"?"[\011]"?<?/etc/passwd?????#?替換passwd文件中所有冒號,代之以tab鍵
??tr?-s?"[:]"?"[\t]"?<?/etc/passwd???????#?替換passwd文件中所有冒號,代之以tab鍵
??echo?$PATH?|?tr?":"?"\n"???????????????#?增加顯示路徑可讀性
??1,$!tr?-d?'\t'?????????????????????????#?tr在vi內使用,在tr前加處理行范圍和感嘆號('$'表示最后一行)
??tr?"\r"?"\n"<macfile?>?unixfile????????#?Mac?->?UNIX
??tr?"\n"?"\r"<unixfile?>?macfile????????#?UNIX?->?Mac
??tr?-d?"\r"<dosfile?>?unixfile??????????#?DOS?->?UNIX??Microsoft?DOS/Windows?約定,文本的每行以回車字符(\r)并后跟換行符(\n)結束
??awk?'{?print?$0"\r"?}'<unixfile?>?dosfile???#?UNIX?->?DOS:在這種情況下,需要用awk,因為tr不能插入兩個字符來替換一個字符 #!/bin/sh?????????#?在腳本第一行腳本頭?#?sh為當前系統默認shell,可指定為bash等shell
?sh?-x?????????????#?執行過程
?sh?-n?????????????#?檢查語法
?(a=bbk)???????????#?括號創建子shell運行
?basename?$0???????#?從文件名中去掉路徑和擴展名
?dirname???????????#?取路徑
?$RANDOM???????????#?隨機數
?$$????????????????#?進程號
?source?FileName???#?在當前bash環境下讀取并執行FileName中的命令??#?等同?.?FileName
?sleep?5???????????#?間隔睡眠5秒
?trap??????????????#?在接收到信號后將要采取的行動
?trap?""?2?3???????#?禁止ctrl+c
?$PWD??????????????#?當前目錄
?$HOME?????????????#?家目錄
?$OLDPWD???????????#?之前一個目錄的路徑
?cd?-??????????????#?返回上一個目錄路徑
?yes???????????????#?重復打印
?yes?|rm?-i?*??????#?自動回答y或者其他
?ls?-p?/home???????#?查看目錄所有文件夾
?ls?-d?/home/??????#?查看匹配完整路徑
?echo?-n?aa;echo?bb????????????????????#?不換行執行下一句話
?echo?-e?"s\tss\n\n\n"?????????????????#?使轉義生效
?echo?$a?|?cut?-c2-6???????????????????#?取字符串中字元
?echo?{a,b,c}{a,b,c}{a,b,c}????????????#?排列組合(括號內一個元素分別和其他括號內元素組合)
?echo?$((2#11010))?????????????????????#?二進制轉10進制
?echo?aaa?|?tee?file???????????????????#?打印同時寫入文件?默認覆蓋?-a追加
?echo?{1..10}??????????????????????????#?打印10個字符
?printf?'%10s\n'|tr?"?"?a??????????????#?打印10個字符
?pwd?|?awk?-F/?'{?print?$2?}'??????????#?返回目錄名
?tac?file?|sed?1,3d|tac????????????????#?倒置讀取文件??#?刪除最后3行
?tail?-3?file??????????????????????????#?取最后3行
?outtmp=/tmp/$$`date?+%s%N`.outtmp?????#?臨時文件定義
?:(){?:|:&?};:?????????????????????????#?著名的?fork炸彈,系統執行海量的進程,直到系統僵死
?echo?-e?"\033[0;31mL\033[0;32mO\033[0;33mV\033[0;34mE\t\033[0;35mY\033[0;36mO\033[0;32mU\e[m"????#?打印顏色 seq?語法1 #?不指定起始數值,則默認為?1
-s???#?選項主要改變輸出的分格符,?預設是?\n
-w???#?等位補全,就是寬度相等,不足的前面補?0
-f???#?格式化輸出,就是指定打印的格式
seq?10?100???????????????#?列出10-100
seq?1?10?|tac????????????#?倒敘列出
seq?-s?'+'?90?100?|bc????#?從90加到100
seq?-f?'dir%g'?1?10?|?xargs?mkdir?????#?創建dir1-10
seq?-f?'dir%03g'?1?10?|?xargs?mkdir???#?創建dir001-010
????????????????sed? sed?10q???????????????????????????????????????#?顯示文件中的前10行?(模擬"head")
??sed?-n?'$='???????????????????????????????????#?計算行數(模擬?"wc?-l")
??sed?-n?'5,/^no/p'?????????????????????????????#?打印從第5行到以no開頭行之間的所有行
??sed?-i?"/^$f/d"?a????? ?????????????????? #?刪除匹配行
??sed?-i?'/aaa/,$d'?????????????????????????????#?刪除匹配行到末尾
??sed?-i?"s/=/:/"?c?????????????????????????????#?直接對文本替換
??sed?-i?"/^pearls/s/$/j/"??????????????????????#?找到pearls開頭在行尾加j
??sed?'/1/,/3/p'?file???????????????????????????#?打印1和3之間的行
??sed?-n?'1p'?文件??????????????????????????????#?取出指定行
??sed?'5i\aaa'?file?????????????????????????????#?在第5行之前插入行
??sed?'5a\aaa'?file?????????????????????????????#?在第5行之后抽入行
??echo?a|sed?-e?'/a/i\b'????????????????????????#?在匹配行前插入一行
??echo?a|sed?-e?'/a/a\b'????????????????????????#?在匹配行后插入一行
??echo?a|sed?'s/a/&\nb/g'???????????????????????#?在匹配行后插入一行
??seq?10|?sed?-e{1,3}'s/./a/'???????????????????#?匹配1和3行替換
??sed?-n?'/regexp/!p'???????????????????????????#?只顯示不匹配正則表達式的行
??sed?'/regexp/d'???????????????????????????????#?只顯示不匹配正則表達式的行
??sed?'$!N;s/\n//'??????????????????????????????#?將每兩行連接成一行
??sed?'/baz/s/foo/bar/g'????????????????????????#?只在行中出現字串"baz"的情況下將"foo"替換成"bar"?
??sed?'/baz/!s/foo/bar/g'???????????????????????#?將"foo"替換成"bar",并且只在行中未出現字串"baz"的情況下替換
??echo?a|sed?-e?'s/a/#&/g'??????????????????????#?在a前面加#號
??sed?'s/foo/bar/4'?????????????????????????????#?只替換每一行中的第四個字串
??sed?'s/\(.*\)foo/\1bar/'??????????????????????#?替換每行最后一個字符串
??sed?'s/\(.*\)foo\(.*foo\)/\1bar\2/'???????????#?替換倒數第二個字符串
??sed?'s/[0-9][0-9]$/&5'????????????????????????#?在以[0-9][0-9]結尾的行后加5
??sed?-n?'?/^eth\|em[01][^:]/{n;p;}'????????????#?匹配多個關鍵字
??sed?-n?-r?'?/eth|em[01][^:]/{n;p;}'???????????#?匹配多個關鍵字
??echo?-e?"1\n2"|xargs?-i?-t?sed?'s/^/1/'?{}????#?同時處理多個文件
??sed?'/west/,/east/s/$/*VACA*/'????????????????#?修改west和east之間的所有行,在結尾處加*VACA*
??sed??'s/[^1-9]*\([0-9]\+\).*/\1/'?????????????#?取出第一組數字,并且忽略掉開頭的0
??sed?-n?'/regexp/{g;1!p;};h'???????????????????#?查找字符串并將匹配行的上一行顯示出來,但并不顯示匹配行
??sed?-n?'?/regexp/{n;p;}'??????????????????????#?查找字符串并將匹配行的下一行顯示出來,但并不顯示匹配行
??sed?-n?'s/\(mar\)got/\1ianne/p'???????????????#?保存\(mar\)作為標簽1
??sed?-n?'s/\([0-9]\+\).*\(t\)/\2\1/p'??????????#?保存多個標簽
??sed?-i?-e?'1,3d'?-e?'s/1/2/'??????????????????#?多重編輯(先刪除1-3行,在將1替換成2)
??sed?-e?'s/@.*//g'?-e?'/^$/d'??????????????????#?刪除掉@后面所有字符,和空行
??sed?-n?-e?"{s/文本(正則)/替換的內容/p}"???????#?替換并打印出替換行
??sed?-n?-e?"{s/^?*[0-9]*//p}"??????????????????#?打印并刪除正則表達式的那部分內容
??echo?abcd|sed?'y/bd/BE/'??????????????????????#?匹配字符替換
??sed?'/^#/b;y/y/P/'?2??????????????????????????#?非#號開頭的行替換字符
??sed?'/suan/r?讀入文件'????????????????????????#?找到含suan的行,在后面加上讀入的文件內容
??sed?-n?'/no/w?寫入文件'???????????????????????#?找到含no的行,寫入到指定文件中
??sed?'/regex/G'????????????????????????????????#?在匹配式樣行之后插入一空行
??sed?'/regex/{x;p;x;G;}'???????????????????????#?在匹配式樣行之前和之后各插入一空行
??sed?'n;d'?????????????????????????????????????#?刪除所有偶數行
??sed?'G;G'?????????????????????????????????????#?在每一行后面增加兩空行
??sed?'/^$/d;G'?????????????????????????????????#?在輸出的文本中每一行后面將有且只有一空行
??sed?'n;n;n;n;G;'??????????????????????????????#?在每5行后增加一空白行
??sed?-n?'5~5p'?????????????????????????????????#?只打印行號為5的倍數
??seq?1?30|sed??'5~5s/.*/a/'????????????????????#?倍數行執行替換
??sed?-n?'3,${p;n;n;n;n;n;n;}'??????????????????#?從第3行開始,每7行顯示一次
??sed?-n?'h;n;G;p'??????????????????????????????#?奇偶調換
??seq?1?10|sed?'1!G;h;$!d'??????????????????????#?倒敘排列
??ls?-l|sed?-n?'/^.rwx.*/p'?????????????????????#?查找屬主權限為7的文件
??sed?=?filename?|?sed?'N;s/\n/\t/'?????????????#?為文件中的每一行進行編號(簡單的左對齊方式)
??sed?'s/^[?\t]*//'?????????????????????????????#?將每一行前導的"空白字符"(空格,制表符)刪除,使之左對齊?
??sed?'s/^[?\t]*//;s/[?\t]*$//'?????????????????#?將每一行中的前導和拖尾的空白字符刪除
??echo?abcd\\nabcde?|sed?'s/\\n/@/g'?|tr?'@'?'\n'????????#?將換行符轉換為換行
??cat?tmp|awk?'{print?$1}'|sort?-n|sed?-n?'$p'???????????#?取一列最大值
??sed?-n?'{s/^[^\/]*//;s/\:.*//;p}'?/etc/passwd??????????#?取用戶家目錄(匹配不為/的字符和匹配:到結尾的字符全部刪除)
??sed?=?filename?|?sed?'N;s/^/??????/;?s/?*\(.\{6,\}\)\n/\1???/'???#?對文件中的所有行編號(行號在左,文字右端對齊)
??/sbin/ifconfig?|sed?'s/.*inet?addr:\(.*\)?Bca.*/\1/g'?|sed?-n?'/eth/{n;p}'???#?取所有IP 修改keepalive配置剔除后端服務器 sed?-i?'/real_server.*10.0.1.158.*8888/,+8?s/^/#/'?keepalived.conf
???sed?-i?'/real_server.*10.0.1.158.*8888/,+8?s/^#//'?keepalived.conf
??模仿rev功能 echo?123?|sed?'/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//;'
???/\n/!G;????????? #?沒有\n換行符,要執行G,因為保留空間中為空,所以在模式空間追加一空行
???s/\(.\)\(.*\n\)/&\2\1/;?????#?標簽替換?&\n23\n1$?(關鍵在于&?,可以讓后面//匹配到空行)
???//D;???????????? #?D?命令會引起循環刪除模式空間中的第一部分,如果刪除后,模式空間中還有剩余行,則返回?D?之前的命令,重新執行,如果?D?后,模式空間中沒有任何內容,則將退出。?
????//D?匹配空行執行D,如果上句s沒有匹配到,//也無法匹配到空行,?"//D;"命令結束
???s/.//;?????????? #?D結束后,刪除開頭的?\n awk判斷
???awk?'{print?($1>$2)?"第一排"$1:"第二排"$2}'??????#?條件判斷?括號代表if語句判斷?"?"代表then?":"代表else
???awk?'{max=($1>$2)??$1?:?$2;?print?max}'??????????#?條件判斷?如果$1大于$2,max值為為$1,否則為$2
???awk?'{if?(?$6?>?50)?print?$1?"?Too?high"?;\
???else?print?"Range?is?OK"}'?file
???awk?'{if?(?$6?>?50)?{?count++;print?$3?}?\
???else?{?x+5;?print?$2?}?}'?file awk循環
??awk?'{i?=?1;?while?(?i?<=?NF?)?{?print?NF,?$i?;?i++?}?}'?file
??awk?'{?for?(?i?=?1;?i?<=?NF;?i++?)?print?NF,$i?}'?file
??awk?'/Tom/'?file???????????????#?打印匹配到得行
??awk?'/^Tom/{print?$1}'?????????#?匹配Tom開頭的行?打印第一個字段
??awk?'$1?!~?/ly$/'??????????????#?顯示所有第一個字段不是以ly結尾的行
??awk?'$3?<40'???????????????????#?如果第三個字段值小于40才打印
??awk?'$4==90{print?$5}'?????????#?取出第四列等于90的第五列
??awk?'/^(no|so)/'?test??????????#?打印所有以模式no或so開頭的行
??awk?'$3?*?$4?>?500'????????????#?算術運算(第三個字段和第四個字段乘積大于500則顯示)
??awk?'{print?NR"?"$0}'??????????#?加行號
??awk?'/tom/,/suz/'??????????????#?打印tom到suz之間的行
??awk?'{a+=$1}END{print?a}'??????#?列求和
??awk?'sum+=$1{print?sum}'???????#?將$1的值疊加后賦給sum
??awk?'{a+=$1}END{print?a/NR}'???#?列求平均值
??awk?-F'[?:\t]'?'{print?$1,$2}'???????????#?以空格、:、制表符Tab為分隔符
??awk?'{print?"'"$a"'","'"$b"'"}'??????????#?引用外部變量
??awk?'{if(NR==52){print;exit}}'???????????#?顯示第52行
??awk?'/關鍵字/{a=NR+2}a==NR?{print}'??????#?取關鍵字下第幾行
??awk?'gsub(/liu/,"aaaa",$1){print?$0}'????#?只打印匹配替換后的行
??ll?|?awk?-F'[?]+|[?][?]+'?'/^$/{print?$8}'?????????????#?提取時間,空格不固定
??awk?'{$1="";$2="";$3="";print}'????????????????????????#?去掉前三列
??echo?aada:aba|awk?'/d/||/b/{print}'????????????????????#?匹配兩內容之一
??echo?aada:abaa|awk?-F:?'$1~/d/||$2~/b/{print}'?????????#?關鍵列匹配兩內容之一
??echo?Ma?asdas|awk?'$1~/^[a-Z][a-Z]$/{print?}'??????????#?第一個域匹配正則
??echo?aada:aaba|awk?'/d/&&/b/{print}'???????????????????#?同時匹配兩條件
??awk?'length($1)=="4"{print?$1}'????????????????????????#?字符串位數
??awk?'{if($2>3){system?("touch?"$1)}}'??????????????????#?執行系統命令
??awk?'{sub(/Mac/,"Macintosh",$0);print}'????????????????#?用Macintosh替換Mac
??awk?'{gsub(/Mac/,"MacIntosh",$1);?print}'??????????????#?第一個域內用Macintosh替換Mac
??awk?-F?''?'{?for(i=1;i<NF+1;i++)a+=$i??;print?a}'??????#?多位數算出其每位數的總和.比如?1234,?得到?10
??awk?'{?i=$1%10;if?(?i?==?0?)?{print?i}}'???????????????#?判斷$1是否整除(awk中定義變量引用時不能帶?$?)
??awk?'BEGIN{a=0}{if?($1>a)?a=$1?fi}END{print?a}'????????#?列求最大值??設定一個變量開始為0,遇到比該數大的值,就賦值給該變量,直到結束
??awk?'BEGIN{a=11111}{if?($1<a)?a=$1?fi}END{print?a}'????#?求最小值
??awk?'{if(A)print;A=0}/regexp/{A=1}'????????????????????#?查找字符串并將匹配行的下一行顯示出來,但并不顯示匹配行
??awk?'/regexp/{print?A}{A=$0}'??????????????????????????#?查找字符串并將匹配行的上一行顯示出來,但并不顯示匹配行
??awk?'{if(!/mysql/)gsub(/1/,"a");print?$0}'?????????????#?將1替換成a,并且只在行中未出現字串mysql的情況下替換
??awk?'BEGIN{srand();fr=int(100*rand());print?fr;}'??????#?獲取隨機數
??awk?'{if(NR==3)F=1}{if(F){i++;if(i%7==1)print}}'???????#?從第3行開始,每7行顯示一次
??awk?'{if(NF<1){print?i;i=0}?else?{i++;print?$0}}'??????#?顯示空行分割各段的行數
??echo?+null:null??|awk?-F:?'$1!~"^+"&&$2!="null"{print?$0}'???????#?關鍵列同時匹配
??awk?-v?RS=@?'NF{for(i=1;i<=NF;i++)if($i)?printf?$i;print?""}'????#?指定記錄分隔符
??awk?'{b[$1]=b[$1]$2}END{for(i?in?b){print?i,b[i]}}'??????????????#?列疊加
??awk?'{?i=($1%100);if?(?$i?>=?0?)?{print?$0,$i}}'?????????????????#?求余數
??awk?'{b=a;a=$1;?if(NR>1){print?a-b}}'????????????????????????????#?當前行減上一行
??awk?'{a[NR]=$1}END{for?(i=1;i<=NR;i++){print?a[i]-a[i-1]}}'??????#?當前行減上一行
??awk?-F:?'{name[x++]=$1};END{for(i=0;i<NR;i++)print?i,name[i]}'???#?END只打印最后的結果,END塊里面處理數組內容
??awk?'{sum2+=$2;count=count+1}END{print?sum2,sum2/count}'?????????#?$2的總和??$2總和除個數(平均值)
??awk?'BEGIN{?"date"?|?getline?d;?split(d,mon)?;?print?mon[2]}'?file????????#?將date值賦給d,并將d設置為數組mon,打印mon數組中第2個元素
??awk?'BEGIN{info="this?is?a?test2010test!";print?substr(info,4,10);}'??????#?截取字符串(substr使用)
??awk?'BEGIN{info="this?is?a?test2010test!";print?index(info,"test")?"ok":"no?found";}'??????#?匹配字符串(index使用)
??awk?'BEGIN{info="this?is?a?test2010test!";print?match(info,/[0-9]+/)?"ok":"no?found";}'????#?正則表達式匹配查找(match使用)
??awk?'BEGIN{info="this?is?a?test";split(info,tA,"?");print?length(tA);for(k?in?tA){print?k,tA[k];}}'????#?字符串分割(split使用)
??awk?'{for(i=1;i<=4;i++)printf?$i""FS;?for(y=10;y<=13;y++)??printf?$y""FS;print?""}'????????#?打印前4列和后4列
??awk??'{for(i=1;i<=NF;i++)?a[i,NR]=$i}END{for(i=1;i<=NF;i++)?{for(j=1;j<=NR;j++)?printf?a[i,j]?"?";print?""}}'???#?將多行轉多列
??awk?'BEGIN{printf?"what?is?your?name?";getline?name?<?"/dev/tty"?}?$1?~name?{print?"FOUND"?name?"?on?line?",?NR?"."}?END{print?"see?you,"?name?"."}'?file??#?兩文件匹配
??cat?1.txt|awk?-F"?#?"?'{print?"insert?into?user?(user,password,email)values(""'\''"$1"'\'\,'""'\''"$2"'\'\,'""'\''"$3"'\'\)\;'"}'?>>insert_1.txt?????#?處理sql語句
取本機IP
??/sbin/ifconfig?|awk?-v?RS="Bcast:"?'{print?$NF}'|awk?-F:?'/addr/{print?$2}'
??/sbin/ifconfig?|awk?-v?RS='inet?addr:'?'$1!="eth0"&&$1!="127.0.0.1"{print?$1}'|awk?'{printf"%s|",$0}'
??/sbin/ifconfig?|awk??'{printf("line?%d,%s\n",NR,$0)}'?????????#?指定類型(%d數字,%s字符)
查看磁盤空間
???df?-h|awk?-F"[?]+|%"?'$5>14{print?$5}'
???df?-h|awk?'NR!=1{if?(?NF?==?6?)?{print?$5}?else?if?(?NF?==?5)?{print?$4}?}'?
???df?-h|awk?'NR!=1?&&?/%/{sub(/%/,"");print?$(NF-1)}'
???df?-h|sed?'1d;/?/!N;s/\n//;s/?\+/?/;'????#將磁盤分區整理成一行???可直接用?df?-P 排列打印
???awk?'END{printf?"%-10s%-10s\n%-10s%-10s\n%-10s%-10s\n","server","name","123","12345","234","1234"}'?txt
???awk?'BEGIN{printf?"|%-10s|%-10s|\n|%-10s|%-10s|\n|%-10s|%-10s|\n","server","name","123","12345","234","1234"}'
???awk?'BEGIN{
???print?"???***?開?始?***???";
???print?"+-----------------+";
???printf?"|%-5s|%-5s|%-5s|\n","id","name","ip";
???}
???$1!=1?&&?NF==4{printf?"|%-5s|%-5s|%-5s|\n",$1,$2,$3"?"$11}
???END{
???print?"+-----------------+";
???print?"???***?結?束?***???"
???}'?txt 老男孩awk經典題
???分析圖片服務日志,把日志(每個圖片訪問次數*圖片大小的總和)排行,也就是計算每個url的總訪問大小
???說明:本題生產環境應用:這個功能可以用于IDC網站流量帶寬很高,然后通過分析服務器日志哪些元素占用流量過大,進而進行優化或裁剪該圖片,壓縮js等措施。
???本題需要輸出三個指標:?【被訪問次數】????【訪問次數*單個被訪問文件大小】???【文件名(帶URL)】
???測試數據
???59.33.26.105?-?-?[08/Dec/2010:15:43:56?+0800]?"GET?/static/images/photos/2.jpg?HTTP/1.1"?200?11299? awk?'{array_num[$7]++;array_size[$7]+=$10}END{for(i?in?array_num)?{print?array_num[i]"?"array_size[i]"?"i}}'
awk練習題 wang?????4
???cui??????3
???zhao?????4
???liu??????3
???liu??????3
???chang????5
???li???????2 1?通過第一個域找出字符長度為4的
???2?當第二列值大于3時,創建空白文件,文件名為當前行第一個域$1?(touch?$1)
???3?將文檔中?liu?字符串替換為?hong
???4?求第二列的和
???5?求第二列的平均值
???6?求第二列中的最大值
???7?將第一列過濾重復后,列出每一項,每一項的出現次數,每一項的大小總和 1、字符串長度
????awk?'length($1)=="4"{print?$1}'
???2、執行系統命令
????awk?'{if($2>3){system?("touch?"$1)}}'
???3、gsub(/r/,"s",域)?在指定域(默認$0)中用s替代r??(sed?'s///g')
????awk?'{gsub(/liu/,"hong",$1);print?$0}'?a.txt
???4、列求和
????df?-h?|?awk?'{a+=$2}END{print?a}'
???5、列求平均值
????df?-h?|?awk?'{a+=$2}END{print?a/NR}'
????df?-h?|?awk?'{a+=$2;b++}END{print?a,a/b}'?
???6、列求最大值
????df?-h?|?awk?'BEGIN{a=0}{if($2>a)?a=$2?}END{print?a}'
???7、將第一列過濾重復列出每一項,每一項的出現次數,每一項的大小總和
????awk?'{a[$1]++;b[$1]+=$2}END{for(i?in?a){print?i,a[i],b[i]}}'
??}
總結
以上是生活随笔為你收集整理的shell awk sed tr grep 语法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 的set,env和expor
- 下一篇: (管道| / 重定向 / xargs)/