awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

以下所有实验输出,均以测试文件test.log内容为基准:

20170102admin,password Open20170801nmask,nmask close20180902 nm4k,test filter

awk

AWK是一种处理文本文件的语言,是一个强大的文本分析工具; awk是以列为划分计数的,$0表示所有列,$1表示第一列,$2表示第二列。

awk参数

-F 指定输入文件折分隔符,如-F:

-v 赋值一个用户定义变量,如-va=1

-f 从脚本文件中读取awk命令

注:只列举最常用的参数

分隔符

每行按空格分割列,并输出第1、3列

$ awk '{print $1,$3}'test.log#或者

$ cat test.log | awk '{print $1,$3}'

自定义分隔符

使用”,”进行分割,参数用-F

awk -F, '{print $1,$2}' test.log

使用多个分隔符,先使用空格分割,然后对分割结果再使用”,”分割

$ awk -F '[ ,]' '{print $1,$2,$3}' test.log #注意逗号前面有一个空格

设置变量

设置awk自定义变量,用参数-v

例子:设置变量a为1

cat test.log | awk -v a=1 '{print $1,$1+a}'

注意:-v a之间要空格。

字符串拼接:(用””而不是+)

cat test.log | awk -v a=\"'{print a""$0""a}'

逻辑判断

输出第一列为20170801的记录

cat test.log | awk '$1==20170801 {print}'

输出第二列不是nmask,nmask的记录

cat test.log | awk '$2!="nmask,nmask" {print}'

内建变量

NR参数:输出行号

cat test.log | awk '{print NR,$1,$2,$3}'

正则表达式

输出第二列中包含nm开头的所有记录

cat test.log | awk '$2 ~ /nm.*/ {print}'

输出包含2017开头的记录

cat test.log | awk '/2017.*/ {print}'

注意:这里没有~,因为没有指定是哪一列

忽略大小写{INGORECASE=1}

cat test.log | awk '{INGORECASE=1} /nmask/ {print}'

匹配取反 !~

cat test.log | awk '$2 !~ /nmask/ {print}'

内置函数

substr字符串截取

截取第一列的第一到第四个字符

cat test.log | awk '{print substr($1,1,4)}'

split切分字符串

以逗号分隔第2列的数据,并输出分别输出第2列的内容

cat test.log | awk '{split($2,a,",");print a[1],a[2]}'

gsub替换

将第2列中的nmask替换成nMask

cat test.log | awk '{gsub("nmask","nMask",$2);print}'

grep

Linux grep命令用于查找文件里符合条件的字符串。

Usage

递归查询

grep -r nmask /etc/ #查看/etc目录下内容包含nmask的文件

查询取反

grep -v test test.log

sed

Linux sed命令是利用script来处理文本文件。

参数

-e 以选项中指定的script来处理输入的文本文件。

-f 以选项中指定的script文件来处理输入的文本文件。

-h 显示帮助。

-n 仅显示script处理后的结果。

-V 显示版本信息。

动作

a :新增, a 的后面可以接字串,而这些字串会在下一行出现

i :插入, i 的后面可以接字串,而这些字串会在上一行出现

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

d :删除

s :取代,通常这个s的动作可以搭配正规表示法!如 s/old/new/g

插入操作

在test.log文件的第3行后插入一行,内容为nmask

sed -e 3a\nmask test.log

删除操作

删除test.log的第2行、第3行数据

cat test.log | sed '2,3d'

匹配删除,删除行中有nmask字符串的

nl test.log | sed '/nmask/d'

替换操作

sed 's/要被取代的字串/新的字串/g'

linux命令 三大利器,awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一...相关推荐

  1. linux awk判断字符串开头,Linux文件比较三剑客(awk/grep/sed)之awk

    一.什么是awk awk是Linux下的一个命令,他对其他命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他可以自定义变量,有条件语句,有循环,有数组,有正则,有函数等.他读取输出,或者文 ...

  2. Linux中正则表达式与文件格式化处理命令(awk/grep/sed)

    一.正则表达式 1.1国际字符模式匹配或匹配模式的类名 [:alnum:] : 0-9,A-Z,a-z [:alpha:] : A-Z,a-z [:upper:] : A-Z [:lower:] : ...

  3. Linux三剑客命令详解(grep sed awk )

    下面所说的是Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能 ...

  4. linux三剑客(awk,grep,sed)

    简介 linux三剑客是指在linux操作系统中非常重要的三个命令,即awk,grep,sed这三个命令.它们都具有优秀的处理文件的功能. ①awk:多用于取列. ②grep:多用于查找或匹配文本. ...

  5. linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结

    一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...

  6. Linux 运维常用命令 find、awk、sed、grep、vi、ps、lsof、rpm

    先用一个脚本,模拟创建 14 个测试文件: #!/bin/bash for ((i=1;i<=10;i++)); do if [ $i -lt 3 ] thentouch /home/mysql ...

  7. linux 常用命令 ln/cat/echo/grep/sed/tar/wc/find/ssh/scp/strace/strings/dd/chrt/iostat/rotatelogs/dstat

    ln.cat.echo 的常用example: ln -s [需要被链接的source] [需要新创建的快捷方式target]注意,source要写绝对路径!cat > filename < ...

  8. Linux正则表达式和文本处理工具(gred、awk、sed)

    使用Linux 的 gred.awk.sed 可以方便得处理文本,然而若要灵活使用这三个工具,首先必须理解正则表达式.这里先对正则表达式进行学习,做点记录,之后再练习一下文本处理工具的使用. 正则表达 ...

  9. linux系统grep用法,Linux系统中怎么使用grep命令?

    在维护Linux系统时,我们常常需要在文本中搜索需要的东西,如果人为手动的去找那显然效率低下,那么如何才能快速找到所需要的文本呢?下面小编就以CentOS6.4系统为例为大家演示如何进行文本查找. 一 ...

最新文章

  1. 2022-2028年中国企业核心路由交换机行业市场前瞻与投资分析报告
  2. 半分钟内能看透问题本质的人是如何思考的?
  3. python3 字典 dict 常见用法总结(判断key是否存在)
  4. 罗泾数据中心顺利投产 中国太保科技建设正式步入“两地三中心”时代
  5. pthread_join函数
  6. 如何安装tensorflowGPU环境搭建(不报AVX2的警告)
  7. Nest,很酷的东西
  8. 【车牌识别】基于matlab GUI模板匹配车牌识别门禁系统【含Matlab源码 1091期】
  9. jQuery基础知识--Form基础(续)
  10. ArcGis 拓扑检查——狭长角锐角代码C#
  11. java冒泡排序和插入排序
  12. YouTube双字幕显示
  13. 项目管理 - 常用英语词汇一
  14. 优秀的程序员是不用过圣诞节的
  15. 计算机一级荷塘月色操作题,《荷塘月色》课后习题及答案
  16. win7 matlab 7.0,win7环境下使用matlab7.0的方法
  17. gtest中死亡测试
  18. 使用Openxal框架开发加速器模型相关的java应用程序
  19. nunjucks.js模板渲染
  20. 经典Python视频教程

热门文章

  1. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01
  2. Angular 导致公司损失数十亿美元!
  3. “意念打字”终成真!准确率超 99%,还登上了《Nature》封面!
  4. 华为高管揭秘公司不上市的原因;微信回应「花钱就能查到聊天记录」;马斯克删除「超苹果只要几个月」评论 | 极客头条...
  5. Firefox 新版本发布,Cookie 可真不好吃
  6. 位居中国机器学习公有云市场份额第一,华为云 ModelArts 的进阶之路
  7. 来看看优酷是如何测试 App 响应式布局的!
  8. 进阶必看的 RocketMQ ,就这篇了!
  9. 分析数万条国庆旅游评论数据后,我发现了“坑爹”景点背后的秘密
  10. 谷歌:明年开始对应用内购买抽取 30% 分成;钉钉创始人无招将离任;Java O2OA V5.2.0 发布|极客头条