Linux三剑客与管道使用

一、管道

1、什么是管道

  • linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入

2、 例子

  • echo "hello123"|grep "hello"

二、正则

1、什么是正则

  • 正则表达式就是记录文本规则的代码

2、正则的用法

  • 常用元字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
  • 常用的限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

三、grep

1、grep定义

  • 根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行

2、命令形式

  • grep[OPTIONS]PATTERN[FILE...]

3、选项

符号 说明
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-E 使用ERE,相当于egerp

四、sed

1、定义

  • sed是流编辑器,一次处理一行内容

2、命令

  • sed[-hn..][-e<script>][-f<script文件>][文本文件]
  • -h 显示帮助
  • -n 仅显示script处理后的结果
  • -e<script> 以选项中指定的sceipt来处理输入的文本文件
  • -f<script文件>以选项中指定的script文件来处理输入的文本文件

3、常用动作

符号/说明 例子
a:新增 sed -e '4 a newline'
c:取代 sed -e '2,5c NO 2-5 number'
d:删除 sed -e '2,5d'
i:插入 sed -e '2i hello'
p:打印 sed -n '/root/p'
s:取代 sed -e 's/old/new/g

4、实战

  • 在第二行后添加newline
sed '2a newline' test.txt
  • 在第二行前添加newline
sed '2i newline' test.txt
  • 全局替换
sed -e 's/root/hello/g' test.txt
  • 直接修改文件内容
sed -i 's/root/hello/g' test.txt

五、awk

1、定义

  • 把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理

2、命令形式

  • awk 'pattern + action'[FILE]

3、命令解析

  • awk 'pattern + action'[FILE]
  • -pattern 正则表达式
  • -action 对匹配到到内容执行的命令(默认为输入每行内容)

4、常用参数

符号 说明
FILENAME awk浏览的文件名
BEGIN 处理文本之前要执行的操作
END 处理文本之后要执行的操作
FS 设置输入域分隔符(列数)
NR 已读的记录数(行数)
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 整条记录
$1 表示当前行的第一个或...以此类推x

5、实战

  • 搜索/etc/passwd有root关键字的所有行,并显示对应的shell
awk -F:'/root{print $7}'/etc/passwd
  • 打印/etc/passwd的第二行信息
awk -F:'NR==2{print $0}'/etc/passwd
  • 使用begin加入标题
awk 'BEGIN{print "BEGIN","BEGIN"}{print$1,$2 }'/etc/passwd
  • 自定义分割符
echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容