首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux文本处理三剑客

Linux文本处理三剑客

作者头像
小简
发布2023-01-04 14:01:55
4.4K0
发布2023-01-04 14:01:55
举报
文章被收录于专栏:简言之简言之

awk、sed、grep是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

awk🍉

awk简介

◆名字来源于三个作者的名字简称 ◆适用于需要按列处理的数据,主要用于文本内容的分析处理,也常用于处理数据,生成报告

awk基本用法

1、打印对应列

ifconfig | awk '{print 1,2,

2、-F 参数

cat /etc/shadow | awk -F: '{print $1}' 指定 为分隔字符来获取该文件的第1列的列值。

awk 'BEGIN{FS=":"}{print $1}' test.txt 内建变量,指定 :为分隔字符。

awk -F'[ :]' '{print $1}' test.txt 使用多个分割符,在[]内有一个空格和 : 字符,先使用空格作为分隔符,然后对分割结果再使用:进行分割。

3、-v 参数

awk -vb=3 '{print 1,b}' test.txt 设置变量,即可以任意给定变量的值,在选择要输出的列的值就可以设置为这个变量。

awk -vx=2 -vy=fl '{print 1,x,

4、-f 参数

awk -f fl.awk test.txt 使用文件中的awk参数来获取信息。

5、运算符

awk '$1>3' test.txt 列出第一列值大于3的行。

awk '$1==3' test.txt 显示第一列值等于3的行。

awk '$1==3 {print $1,$3}’ test.txt显示第一列值等于3的所在行的第一列和第三列的值。

awk '$1>3 && $4=="aaaaaa" {print $1,$2,$3,$4}' test.txt显示第一列大于3且第四列的列值等于“aaaaaa”的所在行的第1,2,3,4列的列值。

6、打印抬头文

awk -F: 'BEGIN {print "---------fulin_test-----------"} {print $1}' test.txt

sed🍓

sed简介

◆stream editor ◆根据定位到的数据行修改数据,主要用于文本内容的编辑,默认只处理模式空间,不改变原数据

sed基本用法

1、-n 参数
1.1 显示单行

sed -n '4p' test.txt 显示文件的第4行。

1.2 显示行范围

sed -n '3,6p' test.txt 显示文件的3至6行。

1.3 显示关键字所在行

sed -n '/aaaa/'p test.txt 显示包含关键字的所有行。

1.4 显示整个文件

sed -n '1,p' test.txt 显示整个文件,其中p代表最后一行。

sed -n '/\/'p test.txt 由于本身对sed代表一种含意(表示最后一行),而若需要过滤文档本身字符,要让字符失去意义就要将用表示字符本身.

1.5 正则表达式

sed -n '/.*fl/'p test.txt 使用正则表达式:’. ‘ ‘*’ ‘ .*fl’等。

2、模式/pattern/= 显示行号

sed '/fl/=' test.txt 使用模式/pattern/=显示文件所有内容及关键字所在行的行号。

sed -n '/fl/=' test.txt在模式/pattern/=的基础上添加-n参数表示仅显示关键字所在行的行号。

3、-e参数

sed -n -e'/aaaaaa/=' -e '/fl/=' -e'/abs/=' test.txt -e参数能够支持多个模式/pattern/=。

sed -n -e'/ssaa/'p -e'/bkha/'p test.txt -e参数也能够支持多个’/pattern/’p模式。

4、替换匹配行的关键字

sed '2s/a/A/g' test.txt 将文件的第2行的所有 a 字符全部替换为A字符。(2s代表第二行、/a/A/匹配第2行的a字符并将a替换为A,g代表的是全局)。

但是这种关键字的替换并不会修改源文件,仅是在命令执行后临时性的显示一次。

5、-i参数

sed -i '4s/a/A/g' test.txt -i 直接修改文件内容 ,替换修改会保存到源文件中。 4s指的是进行第四行替换, g代指的全局替换 将a替换成A。并保存文件。

6、-i.bak参数

sed -i.bak '4d' test.txt 删除源文件的第4行,并且备份一份未被修改的源文件‘.bak’。

7、sed应用实例
7.1 实用性:达到取任何一个字符

ifconfig | sed -n '2p' |awk -F: '{print $2}'|awk '{print $1}'|awk -F. '{print $2}'|awk -F1 '{print $2}'|awk -F8 '{print $1}'

7.2 截取linux所有网卡及网卡的MAC地址

ifconfig | sed -n -e '1p' -e '10p' |awk '{print $1,"\t|\t"$5}'

7.3 截取linux所有网卡的IP地址及其子网掩码

ifconfig | sed -n -e'2p' -e'11p' | awk '{print $2}'|awk -F: '{print $2}'|grep -v '^$'

grep🍒

grep简介

◆global regular expression print ◆基于正则表达式查找满足条件的行,主要用于文本内容查找,支持正则表达式

grep基本用法

1、 在文件中查找关键字

grep "fl" /etc/passwd 搜索关键字并打印出关键字所在的行。

1.1 -A 参数

grep -A 10 "fl" /etc/passwd 搜索关键字并打印出关键字所在的行以及关键字以下十行。

1.2 -B 参数

grep -B 10 "fl" /etc/passwd 搜索关键字并打印出关键字所在的行以及关键字以上十行。

1.3 -C 参数

grep -C 10 "fl" /etc/passwd 搜索关键字并打印出关键字所在的行以及关键字以上下十行。

2、 在多个文件中查找模式

grep "fl" /etc/passwd /etc/shadow /etc/group /etc/gshadow

3、-l 参数

作用:列出包含关键字的文件名

grep -l "fl" /etc/passwd test.txt a.txt /etc/shadow /etc/group /etc/gshadow

4、-n 参数

作用:列出关键字所在的行号及行的内容

grep -n "fl" /etc/passwd

5、-v 参数

作用:打印出不包含关键字所有的行

grep -v "defaults" /etc/fstab

6、 ^ 符号

作用:输出以某个关键字开头的所有行

grep "^UUID" /etc/fstab

7、 $ 符号

作用:输出以某个关键字结尾的所有行

grep "bash$" /etc/passwd

过滤注释和空行: grep -v "#" test.txt |grep -v "^

8、-r 参数

作用:递归查找

grep -r -n "aaaaaa" . 能把一个目录中只要是包含关键字的所有文件及所在的行的行号都打印出来。

9、-i 参数

作用:忽略大小写

grep -r -i "aaaaaa" .

10、-e 参数

作用:多关键字查找

grep -e "aaaaa" -e "bbbb" test.txt

查看文件中生效的配置:grep -v -e "#" -e "^$" test.txt

11、-f 参数

作用:以指定的文件里面的匹配模式去搜索

grep -f tmp.txt /etc/passwd

12、-c 参数

作用:显示匹配关键字的行数

grep -c "aaaaa" test.txt

grep结合正则表达式

1、^

作用:锚定行首

grep ^fl /etc/passwd

2、$

作用:锚定行尾

grep bash$ /etc/passwd

3、.

作用:匹配为非换行符的任意字符

grep "f....l" test.txt.字符位于两个指定指定的关键字的中间时,一个 . 字符匹配为一个非换行符的任意字符。

grep "f." test.txt.字符位于末尾时则匹配为任意多个非换行符的字符。

4、\

作用:匹配零个或多个先前字符

grep "fu*" test.txt 列出匹配0个或多个关键字所在行。

5、[]

作用:匹配一个指定范围内的字符

grep [ahb] test.txt 列出含有指定范围内的1个或多个关键字的所在行。

6、[^]

作用:匹配不在指定范围内的字符

grep [^fabc] test.txt 列出除了所有字符都是指定范围内的1个或多个关键字的所在行。

7、过滤有数字的行

grep -v [0-9] test.txt

8、打印出有数字的行

grep [0-9] test.txt

9、打印出有字符的行

grep [a-zA-Z] test.txt

9.1 打印出小写字母的行

grep [a-z] test.txt

9.2 打印出大写字母的行

grep [A-Z] test.txt

10、\关键字

作用:打印 \关键字 标记匹配字符

grep \aaaaa test.txt 列出含有关键字的所在行。(^锚定行的开始 $锚定行的结束)。

11、\<

作用:锚定单词开始行

grep "\<fl" test.txt 列出以关键字开头的字符串所在行。

12、\>

作用:锚定单词结束行

grep "fl\>" test.txt 列出以关键字结尾的字符串所在行。

13、x\{m\}

作用:重复连续字符x,m次数

grep "a\{4\}" test.txt 列出文件中存在4个及以上关键字a的所在行。

14、x\{m,n\}

作用:重复连续字符x,m-n次数

grep "a\{7,9\}" test.txt 列出文件中存在7个到9个连续关键字a的所在行。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • awk🍉
    • awk简介
      • awk基本用法
        • 1、打印对应列
        • 2、-F 参数
        • 3、-v 参数
        • 4、-f 参数
        • 5、运算符
        • 6、打印抬头文
    • sed🍓
      • sed简介
        • sed基本用法
          • 1、-n 参数
          • 2、模式/pattern/= 显示行号
          • 3、-e参数
          • 4、替换匹配行的关键字
          • 5、-i参数
          • 6、-i.bak参数
          • 7、sed应用实例
      • grep🍒
        • grep简介
          • grep基本用法
            • 1、 在文件中查找关键字
            • 2、 在多个文件中查找模式
            • 3、-l 参数
            • 4、-n 参数
            • 5、-v 参数
            • 6、 ^ 符号
            • 7、 $ 符号
            • 8、-r 参数
            • 9、-i 参数
            • 10、-e 参数
            • 11、-f 参数
            • 12、-c 参数
          • grep结合正则表达式
            • 1、^
            • 2、$
            • 3、.
            • 4、\
            • 5、[]
            • 6、[^]
            • 7、过滤有数字的行
            • 8、打印出有数字的行
            • 9、打印出有字符的行
            • 10、\关键字
            • 11、\<
            • 12、\>
            • 13、x\{m\}
            • 14、x\{m,n\}
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档