grepawksed三者的区别,Grew的意思
Linux4-文本处理三驾马车:grep, sed, awk
Linux基础课程系列:
grep:一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式: grep [options] pattern file ([]内的部分可以省略)
sed:流编辑器,一般用来对文本进行 增删改查 (sed是以 行 为单位来处理的)。
用法: sed [-options] 'script' file(s)
[!] 表示否定,取反(相当于grep -v)
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其 对数据分析并生成报告 时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk。gawk 是 AWK 的 GNU 版本。
用法: awk [options] '{script}' file 。
基础结构: ' {script} '
匹配结构: ' /pattern/{script} '
扩展结构: 'BEGIN{script} {script} END{script}'
awk 在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量。
$0 代表整个文本行;
$1 代表文本行中的第1个数据字段;
……
$NF 代表文本行中的最后一个数据字段
awk 默认的字段分隔符是任意空白字符(如:空格or 制表符),也可以用-F 参数自定义分隔符
Linux中sed命令同awk命令有什么区别呢,具体该如何使用呢?
sed 多用来编辑修改
awk 多用来打印
sed grep awk 俗称三剑客
使用上sed 和 awk扩展下来,内容可多了,甚至awk可以被当作一种脚本工具,单独出书,sed简单的用法增删改查都是可以直接百度到的,awk的打印也是。
例如 sed中
s 替换
sed 's/zhangsan/lisi/' yourfile 就是将zhangsan替换为lisi ,打印不执行
加上i后才真正执行 sed -i 's/zhangsan/lisi/' yourfile
d 删除
sed '/zhangsan/d' yourfile
sed -i '/zhangsan/d' yourfile
a 追加
sed -i '/zhangsan/alisi' yourfile
i 前插
sed -i '/zhangsan/ilisi' yourfile
p 打印
sed -n '/zhangsan/p' yourfile
因为它本身也会打印一般,所以加 -n 不默认打印
awk
-F 指定分隔符
awk -F ':' '/^root/{print $7}' /etc/passwd
打印以 root开头所在行,以“:”为分隔符,打印第七列
其效果就是打印了root的shell
纯手打,望采纳,谢谢,遇到具体问题仍可继续交流
awk和sed是做什么用的,有什么区别
非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的
unix系统有几个非常命令的特点:
1. 对于内核而言,unix文件都是字节序列。io设备也是文件。
2. 至于文件的含义交由应用程序来解释。其中文本文件非常重要,因为unix提供 很多了实用程序(utility),这些程序功能相对独立,但可以通过管道来实现进程间通信(IPC),这样松散的耦合可以完成复杂的操作。那么进程间的通信的数据格式是怎样的呢? 其实对于实用程序而言,这个数据格式就是简单的文本文件。此外,还有IO重定向,也是一个不错的创意。至于文本文件中的内容采用什么格式呢?这个很具体的命令有关,那么操作文本就变得非常重要。grep,sed和awk就是三个操纵文本文件的命令
grep搜索
sed 修改和编辑文本文件中某些行,也可以搜索
awk 是访问文本文件,操纵文本文件中某些数据,进行搜索统计运算
linux 三剑客(awk、sed、grep)
可以根据文件指定分隔符,像处理表格一样处理文本或序列。通常来处理字段,并基于字段进行过滤,或进行模式匹配。
语法
常用的内建变量
NF :记录的字段数
NR :记录的行号
OFS :输出字段分隔符,默认值与输入字段分隔符一致。
ORS :输出记录分隔符(默认值是一个换行符)
$n :当前记录的第n个字段,字段间由FS分隔
$0 :完整的输入记录
ARGV :包含命令行参数的数组
ARGC :命令行参数的数目
基本用法
awk 脚本
关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句
以上的应用案例基本包括了常用的awk 的常用用法,更复杂的文本处理则可以通过awk 脚本完成。
与awk 相比,sed在处理文本的行具有更好的效率。
基本语法
参数说明
sed 文件处理命令
包括增加、删除、打印、替换行的内容
应用案例
以上的案例表明,sed 的一些操作可以放在行的末尾,或者放在模式匹配的末尾,或者在大括号内以分号分隔,或者通过-e 命令,实现多点编辑。
grep 查找文件里符合条件的字符串。
语法
应用案例
grep 除了可以查找单个文件中匹配的模式,也可以在目录中包含特定字符的文件查找匹配模式的行。