AIX下awk语言的内置字符串函数

来源:互联网 发布:htc手机移动网络不可用 编辑:程序博客网 时间:2024/06/04 06:58

awk语言内置的字符串函数——————————————————————————————————————————————————————————————gsub(r,s)在整个$0中用s替代rgsub(r,s,t)在整个t中用s替代rindex(s,t)返回s中字符串t的第一位置length(s)返回s的长度match(s,r)测试s是否包含匹配r的字符串split(s,a,fs)返回fs上将s分成序列asprint(fmt,exp)返回经fmt格式化后的expsub(r,s)用$0中最左边最长的子串替代ssubstr(s,p)返回字符串s中从p开始的后缀部分substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分——————————————————————————————————————————————————————————————1.gsub函数将包含4842的行中的4842替换为4899:awk 'gsub(/4842/,4899) {print $0}' grade.txtJ.Troll    07/99  4899   Brown-3  12   26   26awk '{if($3~/4842/) print $0}' grade.txt[or awk '$0 ~/4842/ ' grade.txt]J.Troll    07/99  4842   Brown-3  12   26   262.index函数找出ny首次出现的位置:awk 'END {print index("Bunny","ny")}' grade.txt4在第一个域中包含Bunny中找出ny首次出现的位置,并打印此行:awk '$1~/Bunny/ {print index($1,"ny") ":" $0}' grade.txt6:P.Bunny    02/99  48     Yello    12   35   283.length函数awk 'if(($1~/Tran/) ||  (length($1) > 7)) {print $0}' grade.txt报错:awk: Syntax error at line 1 of program << if(($1~/Tran/) ||  ( ... >> context is         >>> if <<< (($1~/Tran/) ||  (length($1) > 7)) {print $0}awk: bailing out at line 1 of program << if(($1~/Tran/) ||  ( ... >>错误原因:所有的动作要包含在{}内。正确:awk '{if(($1~/Tran/) ||  (length($1) > 7)) {print $0}}' grade.txtM.Tansley  05/99  48311  Green    8    40   44L.Tansley  05/99  4712   Brown-2  12   30   284.match函数awk 'BEGIN{print match("abcd",/A/)}'0awk 'BEGIN{print match("abcd",/c/)}'3awk '$1=="J.Lulu" {print match($1,"u")}' grade.txt45.split函数awk 'BEGIN {print split("123#456#789",myarray,"#")}'36.sub函数awk 'if($1~/Troll/) {print $0}' grade.txtif必须放在{}内,否则awk: Syntax error at line 1 of program << if($1~/Troll/) {prin ... >> context is         >>> if <<< ($1~/Troll/) {print $0}awk: bailing out at line 1 of program << if($1~/Troll/) {prin ... >>awk '{if($1~/Troll/) {print $0}}' grade.txtJ.Troll    07/99  4842   Brown-3  12   26   267.substr函数awk '$1=="L.Tansley" {print substr($1,1,5)}' grade.txtL.Tan没第三个参数awk '$1=="L.Tansley" {print substr($1,1)}' grade.txtL.Tansley地三个参数大于域长度awk '$1=="L.Tansley" {print substr($1,1,100)}' grade.txtL.Tansley指定长度awk '$1=="L.Tansley" {print substr($1,1,length($1)-1)}' grade.txtL.Tansle起始位置为0awk '$1=="L.Tansley" {print substr($1,0,length($1)-1)}' grade.txtL.Tansle截取整行awk '$1=="L.Tansley" {print substr($0,1,15)}' grade.txtL.Tansley  05/9打印截取的数据和原数据awk '$1=="L.Tansley" {print substr($0,1,15)} END{print $0}' grade.txtL.Tansley  05/9L.Tansley  05/99  4712   Brown-2  12   30   28将截取的字符串连接一个字符串awk '$1=="L.Tansley" {print substr($0,1,15) "___3 blanks"}' grade.txtL.Tansley  05/9___3 blanks取名字awk '{print substr($1,3)}' grade.txtTansleyLuluBunnyTrollTansley8.从shell中向awk传入字符串echo "_yeeXun" | awk '{print length($0)}'7STR="grade.txt"echo $STR| awk '{print substr($STR,1,5)}'awk: illegal field $() input record number 1, file - source line 1 of program << {print substr($STR,1 ... >>错误原因:awk不认识$STR,管道命令传递过来的数据,被认为$0,所以应该将$STR替换为$0:echo $STR| awk '{print substr($0,1,5)}'grade截取后缀echo $STR| awk '{print substr($0,7)}'txtecho $STR | awk '{print substr($0,match($0,/\./)+1)}'txt取目录下的所有文件的后缀:ls -ltotal 28-rw-r--r--   1 xxxx     group          0 Nov 19 10:12 cat-rw-r--r--   1 xxxx     group         28 Nov 14 20:32 cat_file.txtdrwxr-xr-x   2 xxxx     group        512 Nov 21 08:30 c_src-rw-r--r--   1 xxxx     group        356 Nov 16 19:50 data.f-rw-r--r--   1 xxxx     group        284 Nov 19 10:36 delete_me_and_die-rwxr--r--   1 xxxx     group         61 Nov  8 09:15 first2-rw-r--r--   1 xxxx     group        235 Nov 19 10:44 grade.txt-rwxr--r--   1 xxxx     group        354 Nov 17 11:05 info.txt-rwxr-----   1 xxxx     group         23 Nov  7 19:12 myfiledrwxr-xr-x   2 xxxx     group        512 Nov 21 08:30 sql_src-rwxr--r--   1 xxxx     group        225 Nov 15 18:08 test.bak-rwxr--r--   1 xxxx     group        225 Nov 15 14:12 test.sql-rw-r--r--   1 xxxx     group       1998 Nov 15 14:15 who.out-rw-r--r--   1 xxxx     group        229 Nov 19 14:44 wowls -l | awk '{print substr($9,match($9,/\./)+1)}'cattxtc_srcfdelete_me_and_diefirst2txttxtmyfilesql_srcbaksqloutwow找到有后缀名的文件ls -l | awk '{if(match($9,/\./)>0) {print $9}}'cat_file.txtdata.fgrade.txtinfo.txttest.baktest.sqlwho.out然后截取后缀:ls -l | awk '{if(match($9,/\./)>0) {print substr($9,match($9,/\./)+1)}}'txtftxttxtbaksqlout将文件名字,和后缀名用“#”隔开:ls -l | awk '{if(match($9,/\./)>0) {print $9"#" substr($9,match($9,/\./)+1)}}'cat_file.txt#txtdata.f#fgrade.txt#txtinfo.txt#txttest.bak#baktest.sql#sqlwho.out#out使用“>”将数据写入文件,直接覆盖;“>>”,附加。

--the end--

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 总统任期到后不卸任怎么办 下水管声音大怎么办 水管水流声音大怎么办 空调水管声音大怎么办 邻居水管声音大怎么办 晚上水管一直响怎么办 被棘冠海星刺到怎么办 家里突然水压小怎么办 自来水出水量小怎么办 开水龙头水管响怎么办? 海里游泳遇到暗流怎么办 网站运营权出问题怎么办 在澳门超期出关怎么办 妹妹初中毕业谈恋爱怎么办 原告的证据造假怎么办 慕课考试不及格怎么办 大学高数不及格怎么办 对方拒绝司法调解怎么办? cas授权已过期怎么办 英法巡航南海中国怎么办 wps文件不能改怎么办 wps不能删除内容怎么办 word文件被锁定怎么办 word批注不显示怎么办 wps怎么办把修订取消 审阅密码忘了怎么办 psv关机后怎么办刷 被螃蟹扎了怎么办 被海鲜划伤出血怎么办 海域使用证缴纳金没交怎么办 海峡中线 金门海域怎么办 对工作失去热情怎么办 取款机多出钱怎么办 风扇声音很响怎么办 稳压器输出没电怎么办 稳压器不稳10压怎么办 dnf凯蒂不见了怎么办 马桶里掉进塑料瓶盖怎么办 塑料瓶子盖子打不开怎么办 按压瓶盖坏了怎么办 瓶盖拧错位了怎么办