linux 三剑客命令(grep,sed ,awk) 详细介绍
首先介绍一下Linux里面鼎鼎有名且非常重要的三剑客命令。
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具。
sed 功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。
awk 是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。
(grep擅长查找,sed擅长修改文件,awk擅长取列)
grep命令
1 1.grep 过滤筛选信息 2 grep "信息" 文件路径 3 ll /|grep "^d" 查找以d开头的信息 4 grep —B 1 "信息" 文件路径 5 —B前一行 —A后一行 —C中心 -c统计 -n显示行数 1 行 (筛选该信息并看该信息上面或者下面的1行) 6 取反排除 7 grep -v love /opt/hello 8 grep -v "^#" /etc/selinux/config (不显示注释) 9 grep -v 不想看的信息 文件路径
sed命令
语法格式:sed 参数 ' 条件--处理方式 ' 文件路径 批量修改文件扩展名 (把txt改成jpg) ls oldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g'|bash 改回去 rename .jpg .txt oldboy*.jpg 用sed命令取出IP地址 ip a s ens33|sed -rn '3s#^.*net (.*)/24.*#\1#gp' 删除修改内容自动备份 sed -i.bak 's#原有内容#修改后的内容#g' 文件路径 (一)sed命令的作用 1.擅长对行进行查找处理 2.擅长将文件的内容信息进行修改调整/删除 (二)sed命令的具体功能 1.文件中添加信息的能力 (增) -i 真实编辑文件 在文件第一行添加: sed -i '1i添加的信息' 文件路径 在文件最后一行添加: ($代表结尾) sed -i '$a添加的信息' 文件路径 sed -i '$a添加的信息\n添加的信息' 文件路径 在hello后面用i添加hello.77,在love后面用a添加love.88: sed -i -e '/hello/ihello.77' -e '/love/alove.8' 文件路径 2.文件中删除信息的能力 (删) d 删除 删除单行信息:sed -i '3d' 文件路径 删除多行信息:sed -i '2,5d' 文件路径 删除指定行:sed -i '3d;6d' 文件路径 删除空行和注释信息行:sed -i '/^#/d;/^$/d' 文件路径 3.文件中替换信息的能力 (改) sed 's#原有内容#修改后的内容#g' 文件路径 如果修改的内容也有#号可以把修改的#换成/ sed -i '4c修改后的内容' 文件路径 修改第4行一整行内容 sed -i.bak 可以备份加后缀 sed命令查询信息方法: -n 取消默认输出 显示单行信息 sed -n '3p' 文件路径(显示第3行) 根据行号信息,输出多行内容 (连续) sed -n '1,3p' 文件路径(显示1到3行) 根据行号信息,输出多行内容 (不连续) sed -n '1p;3p' 文件路径 不显示空行 sed -n '/./p' ./hello.88.sh 根据文件内容的`行号`进行查询: 根据内容信息,输出多行内容(连续)(,输出内容经过的所有路径) [root@hello /]# sed -n '/oldboy/,/Alex/p' 文件路径 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 106,oldboy,CEO 根据内容信息,输出多行内容(不连续)(;只输出指定的) [root@hello /]# sed -n '/oldboy/p;/Alex/p' 文件路径 101,oldboy,CEO 103,Alex,COO 106,oldboy,CEO 根据文件内容的`信息`进行查询: #根据内容信息,输出单行内容 [root@hello /]# sed -n '/oldboy/p' 文件路径 101,oldboy,CEO
awk命令
三,awk awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。awk 是三剑客的老大,利剑出鞘,必会不同凡响。 参数 -F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 -v var=value or --asign var=value 赋值一个用户定义变量。 -f scripfile or --file scriptfile 从脚本文件中读取awk命令。 -mf nnn and -mr nnn 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 -W compact or --compat, -W traditional or --traditional 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 -W copyleft or --copyleft, -W copyright or --copyright 打印简短的版权信息。 -W help or --help, -W usage or --usage 打印全部awk选项和每个选项的简短说明。 -W lint or --lint 打印不能向传统unix平台移植的结构的警告。 -W lint-old or --lint-old 打印关于不能向传统unix平台移植的结构的警告。 -W posix 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替和=;fflush无效。 -W re-interval or --re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 -W source program-text or --source program-text 使用program-text作为源代码,可与-f命令混用。 -W version or --version 打印bug报告信息的版本。 awk 的原理 通过一个简短的命令,我们来了解其工作原理。 awk ‘{print $0}’ /etc/passwd echo hhh|awk ‘{print “hello,world”}’ awk ‘{ print “hiya” }’ /etc/passwd 通过第一个指令你将会见到/etc/passwd 文件的内容出现在眼前。现在,解释 awk 做了些什么。调用 awk时,我们指定/etc/passwd 作为输入文件。执行 awk 时,它依次对/etc/passwd 中的每一行执行 print 命令。所有输出都发送到 stdout,所得到的结果与执行 cat /etc/passwd 完全相同。现在,解释{ print }代码块。在 awk 中,花括号用于将几块代码组合到一起,这一点类似于 C 语言。在代码块中只有一条 print 命令。在 awk 中,如果只出现 print 命令,那么将打印当前行的全部内容