2018-10-18

10月18日任务

9.6/9.7 awk

awk相比sed 更支持于分段

我们可以针对每一个段进行匹配

cd..

mkdir  awk

cp /etc/passwd awk/test.txt

cd awk

ls

awk -F ' : ' '{print $1}' test.txt

如果没有-F 默认以空格或者空白为指定分隔符


print $0表示所有段


awk -F ' : ' '{print $1,$2,$3}' test.txt

打印第123段

awk -F ' : ' '{print $1“#”$2“#”$3}' test.txt

段之间加#,用双引号取代掉,



awk '/oo/' test.txt 列出所有oo的行,匹配出

awk -F ' : ' $1 ~ /oo/' test.txt 匹配第一行里面的oo

awk -F ' : ' $1 ~ /oo+/' test.txt 

不用想grep里面加E

sed

awk不用加其他的符号


也支持多个表达式一起写

awk -F ' : ' '/root/{print$1,$3} /user/ {print $3,$4}' test.txt

grep -E 'root|user' test.txt检查



awk -F ":" '$3==0 ' test.txt

awk -F ":" '$3==0 {print $1}' test.txt

awk -F ":" '$3>="1000" {print $0}' test.txt数字上面加上双引号有区别



awk 

双引号里面是指的 字符,单引号指的是数字


条件&& 并且

条件 || 或者


awk -F ':' '{OFS="#"} $3>1000 || $7 ~ /bash/ {print$1,$3,$7}' test.txt

OFS NR行号  NF 段号 可以作为一个判断条件

awk -F ' : '  ‘NR<=10’ test.txt

awk -F ' : '  ‘NR<=10 && $1 ~ /root|sync/’ test.txt

awk -F ' : '  ‘NR==10 && $1 ~ /root|sync/’ test.txt

awk -F ' : '  ‘{print $NR":"$NF}' test.txt

head -n 3 /etc/passwd | awk -F ":" '$1="root"'

awk 可以用于写脚本


需要反复的练习



类似于grep -n 显示行号

扩展

把这里面的所有练习题做一下

http://www.apelearn.com/study_v2/chapter14.html 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 9.6 awk命令(上) awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准...
    hch004阅读 335评论 0 0
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 1,312评论 0 8
  • awk使用说明 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常...
    好好学习的蜗牛阅读 512评论 0 2
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飞阅读 1,082评论 0 2
  • awk 工具 awk也是流式编辑器,针对文档中的行来操作,一行一行地执行。awk兼具sed的所有功能,而且更加强大...
    XiaoMing丶阅读 152评论 0 0