awk 爱被打了一巴掌 2022-05-26 08:13 184阅读 0赞 # awk # awk兼具sed的所有功能,而且还支持分段 ## 截取文档中某个段 ## 打印文档中的某段,-F作用是指定分隔符 ![20180428052431175][] 打印所有的段awk -F ':' '\{print $0\}' 1.txt ![20180428052442421][] 打印文件的全部内容awk '\{print $0\}' 1.txt,不需要加F,类似于cat查看文件 ![20180428052454541][] awk如果不指定分隔符,则默认空格或空白为分隔符 ![20180428052505514][] 打印多段内容awk -F ':' '\{print $1,$2,$4\}' 1.txt ![20180428052536303][] 打印内容可以指定\#来分割,需要用到双引号 ![20180428052553645][] ## awk匹配功能 ## awk '/oo/' 1.txt ,匹配包含oo的行 ![20180428052606278][] ![20180428052615475][] awk -F ':' '$1 ~ /oo/' 1.txt ,打印第一段中包含oo的行,~表示匹配 ![20180428052636937][] awk -F ':' '$1 ~ /o+/' test.txt ,匹配第一段中包含o的行,支持正则表达式;这里需要知道,出现特殊符号时,awk不用加脱义字符,grep和sed则必须要加脱义字符 ![20180428052748926][] awk支持多个表达式一起写 ![20180428052817988][] ![20180428052826330][] ## 针对数学表达式的用法 ## awk -F ':' '$3==0' 1.txt ,匹配第3段等于0的; awk -F ':' '$3==0 \{print $1\}' 1.txt //匹配第3段等于0的,并打印第1段; awk -F ':' '$3>=1000' 1.txt //匹配第3段大于等于1000的,并打印所有段 ![20180428053728441][] awk -F ':' '$3>="1000"' 1.txt,“1000”是以ASC码值进行排序的,被认为是字符串 ![2018042805385494][] awk -F ':' '$7!="/sbin/nologin" \{print $0\}' 1.txt ,匹配出第7段不是/sbin/nologin的所有段,!=表示不匹配 ![20180428053906100][] ## 条件操作符 ## awk -F ':' '$3<$4' 1.txt ,匹配比较第3段小于第4段的行;awk -F ':' '$3==$4' 1.txt,匹配出第3段和第4段相等的行,==就是等于,精确匹配 ![20180428061002821][] awk -F ':' '$3>"5" && $3<"7"' 1.txt ,匹配第3段大于5的,和小于7的行,&&表示并且的意思 ![20180428061025356][] awk -F ':' '$3>1000 || $7=="/sbin/nologin"' 1.txt ,匹配第3段大于1000的,或者第7段等于/sbin/nologin的所在的行,|| 表示 或者 的意思 ![20180428061049983][] awk -F ':' '$3>1000 || $7 ~ /bash/' 1.txt,匹配第3段大于1000的,或者第7段包含/bash/的 ![2018042806111143][] ## awk的内置变量 ## 常用的变量有OFS、NF和NR,OFS与-F选项有类似的功能,用来定义分隔符,但是在输出时定义 awk -F ':' '\{OFS="\#"\} \{if ($3>1000) \{print $1,$3,$7\}\}' 1.txt //匹配第3段大于1000,第7段匹配/bash/的,然后打印第1,第3,第7段内容, 并用\#分割 ![2018042806121687][] NF表示用分隔符分割后一共有多少行;NR表示行号 ![20180428061253108][] ![20180428061317822][] awk -F ':' 'NR<=10' 1.txt ,打印前10行;awk -F ':' 'NR<=10 && $1 ~ /root|sync' 1.txt,匹配前10行中,第1段包含root或者sync的 ![20180428061335435][] awk -F ':' 'NF==6 && $1 ~ /root|sync/' 1.txt,匹配文件中是6段的,并在第1段包含root或者sync的 ![20180428061424580][] awk -F ':' '\{print $NR":"$NF\}' 1.txt ![20180428061439485][] head -n3 1.txt |awk -F ':' '$1="root"' ,在前3行中,给第1段赋值为root ![20180428061454936][] awk -F ':' '\{(tot=tot+$3)\}; END \{print tot\}' 1.txt,tot值求和,tot默认0开始,每次和新的第三段值相加,最终第三段值加完,输出tot值 ![20180428061523392][] # 扩展 # [练习题][Link 1] [20180428052431175]: /images/20220526/34f8aa7ecb1744d4b0ab357cd5e4a884.png [20180428052442421]: /images/20220526/f146fcc08a6b4ae3910eb6481c74ee7e.png [20180428052454541]: /images/20220526/a9b0ae28517d4fee98c879fe7add4caf.png [20180428052505514]: /images/20220526/7346e2c0d1ba475b98dc89f160bbfc56.png [20180428052536303]: /images/20220526/dd50b6e2f357462daff705024a85e821.png [20180428052553645]: /images/20220526/b8fd9541b82849e98be9423d690f12ab.png [20180428052606278]: /images/20220526/79421cdefc7e4a3786777e3ebca67800.png [20180428052615475]: /images/20220526/1cebb07b876e45bf87c7c16eae7408c2.png [20180428052636937]: /images/20220526/906e21a92eb84c14b2617a06b50371f9.png [20180428052748926]: /images/20220526/5f8eeb2bc0e84452a74f1001ff6054f0.png [20180428052817988]: /images/20220526/01cbcc8a5576457e9f288608a3014dd8.png [20180428052826330]: /images/20220526/05d59af8cd9a438d9c7c98806e429241.png [20180428053728441]: /images/20220526/ef868709fd7045cdac317cee1be5dae9.png [2018042805385494]: /images/20220526/4af670d69c07444bbdd67dcee125a3cd.png [20180428053906100]: /images/20220526/72590bee805a426d829a6eb30780a78d.png [20180428061002821]: /images/20220526/1f87310aa1f44964956494c44951a336.png [20180428061025356]: /images/20220526/8493ef3a878741d392ae06d57751a08d.png [20180428061049983]: /images/20220526/f79fdc34a18240cab9abbde012831a3c.png [2018042806111143]: /images/20220526/89617634545d4000a253f28888d3e6a9.png [2018042806121687]: /images/20220526/9e4a75129f4d43a5abb6c63e8a9a1da6.png [20180428061253108]: /images/20220526/ec2ea498ba6b41be97d40a7e92092383.png [20180428061317822]: /images/20220526/d0817b268e7848f88ab1031bc3711ba8.png [20180428061335435]: /images/20220526/5a91cd446eb541b8ad856a82ee29f032.png [20180428061424580]: /images/20220526/a69efb85f85d4af0b11cdc0f4cc6e186.png [20180428061439485]: /images/20220526/8b3461e68ec745c5bb5e6c86aca151d7.png [20180428061454936]: /images/20220526/65065e67e91e4710b354ea836e416f72.png [20180428061523392]: /images/20220526/f162f62504484f57a5b4e50f42d50149.png [Link 1]: http://www.apelearn.com/study_v2/chapter14.html
相关 [awk] Linux awk命令相关使用 前言: awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分 淡淡的烟草味﹌/ 2023年06月30日 02:23/ 0 赞/ 44 阅读
相关 awk substr awk substr echo 123 | awk '{ print substr( "hello world", 我不是女神ヾ/ 2022年12月21日 00:50/ 0 赞/ 150 阅读
相关 AWK 详解 AWK 详解 awk 用法:awk ' pattern \{action\} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FI 淩亂°似流年/ 2022年08月24日 04:22/ 0 赞/ 196 阅读
相关 awk 目录 简介 1 命令格式&说明 2 调用方法 3 域切分&操作 3 正则匹配 4 内置变量&操作 5 内置函数&操作 6 格式化输出 7 数 àì夳堔傛蜴生んèń/ 2022年08月06日 15:29/ 0 赞/ 171 阅读
相关 awk笔记 awk: awk名来:三个人名的缩写,他们是:Aho、(Peter)Weinberg 和(Brain)Kernighan; 行处理时可以处理行内字段,这是gre ゝ一纸荒年。/ 2022年08月06日 15:23/ 0 赞/ 171 阅读
相关 awk awk awk兼具sed的所有功能,而且还支持分段 截取文档中某个段 打印文档中的某段,-F作用是指定分隔符 ![201804280524311 爱被打了一巴掌/ 2022年05月26日 08:13/ 0 赞/ 185 阅读
相关 awk详解 awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告。 awk的命令格式如下: ! 绝地灬酷狼/ 2022年05月16日 09:57/ 0 赞/ 209 阅读
相关 AWK详解 AWK 简介 AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始 浅浅的花香味﹌/ 2022年01月19日 02:37/ 0 赞/ 307 阅读
相关 awk awk -------------------- Awk文本处理 1.进行逐行扫描文件(或流), 从第一行到最后一行 2.寻找匹配的特定模式的行,在行上进行 我就是我/ 2021年12月16日 03:49/ 0 赞/ 280 阅读
相关 awk awk:一门语言,过滤内容(取列),打印,删除 awk '\{print $1\}' 文件 例如,文件如下: \[root@wuyike ~\]\ cat awk.txt 水深无声/ 2021年09月20日 05:58/ 0 赞/ 379 阅读
还没有评论,来说两句吧...