在使用 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的乐园!
评论