在使用Linux的过程中,经常会看到一些命令使用grep、sed和awk,现在来简单的介绍一下这三个常用的命令。
封面《ハミダシクリエイティブ》
前言
在以前查询各种和Linux有关系的任务资料的时候经常可以看到grep
、sed
、awk
等命令,但是对于他们的作用我没有深入了解过,因此本文将对这几条命令做简单介绍
管道命令
如果需要将bash命令输出进行多重处理的时候就需要用到管道命令,管道命令使用|
界定符。与连续命令不同的是,连续命令只是顺序执行,各个命令不存在相关性,而管道命令会将上一个命令的正确输出作为下一个命令的输入。管道命令需要注意的有以下几点
- 管道命令仅会处理标准输出,忽略标准错误(可以通过数据流重定向来解决,即
2>&1
) - 管道命令必须要能够接受来自前一个命令的数据作为标准输入处理
例子
寻找当前目录下含有bash的文件
1 | ls -a | grep bash |
grep
grep
(globally search a regular expression and print)是管道命令的一种。grep
是分析一行信息,若其中有我们需要的信息,就将该行拿出来
1 | # 语法 |
例子
以我之前常用的寻找java进程为例,使用ps
命令找到所有进程,在使用grep
进行过滤,这样就能找到java web的进程了。
1 | ps -ef | grep java |
grep
除了普通的字符串以外还支持正则表达式,是一个很强大的命令
sed
sed
也是一个管道命令,可以分析标准输入,可以将数据进行替换、删除、新增、选取特定行
1 | # 语法 |
例子
新建test.txt
写入如下内容
1 | line 1 |
sed例子
1 | # 删除2-5行 |
awk
相较于sed常常处理一行数据,awk倾向于以列来处理数据
1 | awk '条件类型1{操作1}条件类型2{操作2}...' filename |
例子
1 | # 在test.txt写下如下内容 |
1 | # 每行按空格或TAB分割,输出文本中的1、4项 |
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qxdn的乐园!
评论
TwikooDisqus