Linux三剑客-sedawk

news2024/11/15 3:29:20

一、三剑客-sed命令

1、格式

sed + '找谁干啥' + 文件

找谁:条件,匹配哪一行,哪些行.
干啥:动作,增删改查.
#显示文件的第3行
sed -n '3p' /etc/passwd
选项说明
-n取消默认输出
-p查找
-rsed支持扩展正则
-i修改文件内容,这个选项放在最后
-i.bak先进行备份,然后修改文件内容,这个选项放在最后

2、如何运行

在这里插入图片描述

3、sed之查找

一种是类似于grep模糊查找. 一种是精确查找,行号.

  • 类似于grep命令的过滤,比grep强在于可以指定行号,
  • 类似于grep命令的功能,模糊查询(通过正则).

案例01:取出文件的第3行

-n表示取消默认输出,sed处理文件的时候会默认的输出每一行内容

sed -n '3p' /etc/passwd

案例02:取出/etc/passwd的第2行到第5行

sed -n '2,5p' /etc/passwd

案例03:过滤出/etc/passwd中包含root的行

sed -n '/root/p' /etc/passwd
cat /etc/passwd | grep root
#如果是以root开头呢
sed -n '/^root/p' /etc/passwd

sed进行过滤的时候需要使用//并且里面支持基础正则 如果需要使用扩展正则需要使用sed -r选项

案例04:获取范围内的日志

#sed -n '/从哪里来/,/到哪里去/p' tx.txt
sed -n '/102/,/104/p' tx.txt

案例05:只显示第3行和第5行

sed -n '3p;5p' /etc/passwd

案例06:表示有规律查找

 [root@yunwei ~]# seq 10 | sed -n '1~2p'
1
3
5
7
9
[root@yunwei ~]# seq 10 | sed -n '2~2p'
2
4
6
8
10

4、sed之修改

sed命令替换格式

sed 's#找谁#替换成什么#g' tx.txt

推荐使用:###,@@@,///

s substitute 替换 sub

g global 全局替换,这一行中把所有匹配到的内容都进行替换,否则只替换每一行第1个匹配的内容

修改文件内容

-i确认修改

修改文件内容之前进行备份,然后修改文件内容

sed -i.bak 's#js#xp#g' tx.txt

一般用于替换某一个文件,如果是多个文件就打包压缩进行备份即可

后向引用格式

sed命令中用于处理列的方式:

使用替换的形式 s###g

前2个井号之间通过正则与(),对数据进行分组

后面2个井号之间通过\数字,去调用前面分组的内容

#输出12345678,通过sed加工变成1<234567>8
[root@yunwei ~]# echo {1..8} | sed -r 's#(1)(.*)(8)#\1<\2>\3#g'
1< 2 3 4 5 6 7 >8

案例01:调换/etc/passwd第1列和最后一列内容

sed -r 's#(^.*)(:x.*:)(.*$)#\3\2\1#g' passwd 

案例02:取出网卡ip地址

ip a s eth0 | sed -n '3p'  | sed -r 's#^.*et ([0-9.]+)/.*$#\1#g'

5、sed之删除

d delete 删除sed命令删除功能按照行为单位进行

如果仅仅删除某一行的一些字符推荐使用's#[a-z]##g'

排除/删除文件中的空行和带注释的行

egrep -v '^$|^#' sshd_config
sed -r '/^$|^#/d' sshd_config
awk '! /^$|^#/' sshd_config

6、sed之增加

cai

  • a append 在指定行后面追加内容
  • i insert 在指定行上面插入一行
  • c replace 替换指定行的内容
[root@yunwei ~]# cat tx.txt
101,aa,CEO
102,bb,CTO
103,cc,COO
104,js,CFO
105,time,CIO
110,gege,COCO
[root@yunwei ~]# sed '3a tianjia' tx.txt
101,aa,CEO
102,bb,CTO
103,cc,COO
tianjia
104,js,CFO
105,time,CIO
110,gege,COCO
[root@yunwei ~]# cat tx.txt
101,aa,CEO
102,bb,CTO
103,cc,COO
104,js,CFO
105,time,CIO
110,gege,COCO
#只要不保存,就不加一个 -i

7、总结

在这里插入图片描述

二、三剑客-awk命令

四剑客特点擅长
find查找文件查找文件,与其他命令配合
grep/egrep过滤过滤速度很快
sed过滤,取行,替换,删除替换,修改文件内容,取行
awk过滤,取行,取列,统计计算,判断,循环…取行,取列,统计计算

1、格式

#取出/etc/passwd中的第1行的第1列,第3列和最后一列
awk -F: 'NR =1{print $1,$3,$NF}' /etc/passwd
awk 选项 '条件{动作}' /etc/passwd
#条件 找谁
#动作 干啥

2、执行流程

在这里插入图片描述

3、取行

案例一:取出/etc/passwd的第1行

[root@yunwei ~]# awk 'NR==1' /etc/passwd
[root@yunwei ~]# awk 'NR==1{print $0} ' /etc/passwd
root:x:0:0:root:/root:/bin/bash

NR Number of Record 记录号,行号

== 表示等于

{print $0} 输出整行内容 $0表示当前行的内容、awk满足条件后默认的动作,输出这一行的内容

案例二:取出/etc/passwd的第2行到第5行的内容

awk 'NR>=2 && NR<=5' /etc/passwd

>= 表示大于等于

&& 表示并且

|| 表示或者

awk常用运算符说明
==等于
!=不等于
>大于
>=大于等于
<小于
<=小于等于
&&并且

案例三:过滤出/etc/passwd文件中包含root或nobody的行

awk '/root/ || /nobody/' /etc/passwd
awk '/root|nobody/' /etc/passwd

案例四:从包含root的行到包含nobody的行

awk '/root/,/nobody/' /etc/passwd

4、取列

案例一:使用awk取出 ls -lh 的大小列和最后一列

 ls -lh | awk '{print $5,$9}'| column -t

awk中取列的时候说明:

  • 数字,表示取列,数字,表示取列,数字,表示取列,1 第1列; $0表示这一行.
  • $NF 最后一列
  • NF Number of Field 每行有多少列
  • $(NF-1) 取出倒数第2列,一般用于正向取发生变化或数字过大.

awk输出与对齐:

  • 使用column -t 命令即可或者使用 \t

案例二:取出/etc/passwd中的第1列,第3列和最后一列

awk取列的时候,默认是通过空白字符进行分割的.

空白字符:空格,连续空格,tab键.

但是一些时候使用默认分隔符不够了,需要我们手动指定分隔符,通过-F选项指定. 未来我们想快速取出想要的内容,选择趁手工具(选好分隔符).

选择分隔符建议: 看你目标两边是啥

awk -F':'  '{print$1,$3,$NF}' /etc/passwd | column -t

案例三:指定复杂分隔符取出 ip

ip a s eth0 | awk 'NR==3'| awk '{print $2}' | awk -F '/' '{print$1}'
#不加-F指定分隔符,按照直意理解
ip a s eth0 | awk -F '[ /]' 'NR==3{print $6}'
ip a s eth0 | awk -F '[ /]+' 'NR==3{print $3}'
#+号 连续的空格

在这里插入图片描述

5、取行和取列

awk 格式'条件{动作}

案例一:取行+取列 取ip地址

ip a s eth0 | awk -F '[ /]+' 'NR==3{print $3}'

案例二:取出权限部分 stat /etc/hosts的0644部分

stat /etc/hosts | awk -F '[(/]' 'NR==4{print $2}'

案例三:取出/etc/passwd文件中第3列大于100的行,取出这行的第1列,第3列和最后列

awk -F ':' '$3>=1000{print $1,$3,$NF}' /etc/passwd | column -t

通过awk实现对某一列进行判断,然后进行提取.

案例四:如果系统swap使用超过0则输出"异常系统开始占用swap

free | awk 'NR==3 && $3>0{print "异常系统开始占用swap"}'

案例五:过滤出/etc/passwd第4列的数字是以0或1开头的行,输出第1列,第3列,第4列

awk -F ':' '$4~/^[01]/{print $1,$3,$4}' /etc/passwd

温馨提示 awk中 通过~可以实现对某一列进行过滤 某一列中含有xxxx内容

  • ~ 表示包含的意思 $1 ~ /root/ 表示第1列中包含root
  • !~表示不包含

6、awk的统计与计算

awk进行统计有2类案例:

  • 类似于wc -l统计次数.
  • 进行求和,累加.

案例一:统计次数

[root@yunwei ~]# awk '{i=i+1} END{print i}' /etc/passwd
30
[root@yunwei ~]# cat /etc/passwd | wc -l
30

END{}内容会在awk读取完成文件的时候执行.

END{}一般用于输出执行结果.

i=i+1 === i++

案例二:计算总和

seq 10 > num.txt计算num.txt每一行的数字的总和

[root@yunwei ~]# awk '{i=i+$1}END{print i}' num.txt
55

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS2017编译osg3.6.0和osgearth2.10

osg3.6.0正常编译即可&#xff0c;osgearth2.10编译过程中会出现如下错误 1.osgEarth出错 1>HTTPClient.obj : error LNK2019: 无法解析的外部符号 curl_global_init&#xff0c;该符号在函数 "public: static void __cdecl osgEarth::HTTPClient::globalInit(void)&…

【日常记录-Docker】基于Alibaba Cloud Linux3安装nodejs18

Author&#xff1a;赵志乾 Date&#xff1a;2024-08-23 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 问题 Alibaba Cloud Linux3基础镜像中携带的nodejs安装包版本为v14&#xff0c;与项目开发中使用的v18版本不同&#xff0c;需要更新…

数据库 —>数据库编程

数据库&#xff0c;用来保存信息&#xff0c;和文件有同样的作用&#xff0c;但是却有别于文件&#xff1b; 文件掉电不会消失&#xff0c;一般用来存储软件配置&#xff0c;想要保存的东西&#xff0c;他在查找的时候是一行一行的去查找&#xff0c;效率不高&#xff1b; 数据…

虚谷数据库连接断开-常见问题的排查及解决方法

在日常的数据库管理工作中。虚谷数据库连接断开是一个常见的问题&#xff0c;这不仅会影响数据库的性能&#xff0c;还可能导致应用程序无法正常运行&#xff0c;本文将探讨Xugu数据库连接断开的原因&#xff0c;并提供相应的解决方法。 E50022 与服务器间的连接已经断开,可能…

如何用ACME.SH实现SSL证书自动化管理?

在上篇《免费SSL证书有效期缩短至90天&#xff0c;该如何应对&#xff1f;》中&#xff0c;想必大家都已经get到了——建站必备四件套之SSL证书的有效期不断缩短已成不可逆的趋势。 这一趋势下&#xff0c;如何有效管理SSL证书成了一道难题。有机智的小伙伴反馈&#xff0c;使用…

golang(go语言)打包成带图标的 exe 可执行文件

目录 1、准备 ico 图标 2、生成 syso 文件 3、打包 4、效果 1、准备 ico 图标 2、生成 syso 文件 创建 main.rc 文件&#xff0c;rc文件的名称main 与项目根目录下 main.go的 main 同名 IDI_ICON1 ICON "favicon.ico" cmd 窗口运行命令 windres -o main.syso main…

从零开始编程:Go语言真的适合新手吗?

Go语言自诞生以来&#xff0c;一直以其简洁、高效和面向工程的特性受到开发者的青睐&#xff0c;尤其是在后端开发和并发编程方面&#xff0c;Go表现出了独特的优势。然而&#xff0c;作为一门以简单著称的语言&#xff0c;它是否适合作为编程初学者的第一门语言呢&#xff1f;…

电脑换硬盘怎么全盘克隆?轻松实现数据迁移

随着科技的不断发展&#xff0c;电脑硬盘的存储容量和读写速度也在不断提升。为了获得更好的电脑使用体验&#xff0c;许多用户会选择更换更大容量、更高效的硬盘。然而&#xff0c;在更换硬盘的过程中&#xff0c;一个关键的问题摆在了我们面前&#xff1a;如何将旧硬盘中的所…

一文掌握 Go 内存对齐

往期精选文章推荐&#xff1a; 深入理解 go map go 常用关键字 深入理解 Go 数组、切片、字符串 深入理解channel 深入理解 go context 深入 go interface 底层原理 深入理解 go reflect 深入理解 go unsafe 前言 在前面的文章 《深入理解 go reflect》和 《深入理解…

还在拼接字符串生成XML?(Java)

FreeMarker是一个功能强大的Java模板引擎&#xff0c;广泛应用于生成动态内容&#xff0c;如HTML、XML和其他文本格式。本文将介绍FreeMarker的基本使用方法&#xff0c;并提供一个更丰富的XML模板示例&#xff0c;以及模板标签和标识的含义。 1. 引入依赖 <dependency>…

Redis持久化RDB/AOF

一、RDB RDB&#xff08;Redis DataBase&#xff09; &#xff1a;RDB 持久性以指定的时间间隔执行数据集的时间点快照&#xff0c;就是把某一刻的数据和状态以文件的形式写到磁盘上。这个快照文件称为RDB文件&#xff08;dump.rdb&#xff09;。 自动触发 Redis7版本&#xff…

Jira使用指南(高级搜索JQL/统计/面板设计)

1.Jira使用指南 Jira使用指南.pdf 上面的pdf比较详细的介绍了Jira的使用&#xff0c;目录如下&#xff1a; 或者从Jira的中文官网获得更多的使用指南 JIRA入门教程 1.1JIRA如何根据过滤出我关注的单子 https://www.cnblogs.com/wzxbro/p/17203914.html 登录JIRA平台&#…

利用子域的System权限通往父域

前言 最近翻阅笔记发现一篇文章提到通过子域的System权限可以突破获取到父域权限&#xff0c;本文将对此技术进行尝试复现研究。 利用分析 环境信息&#xff1a; 子域&#xff1a;187、sub.cs.org 父域&#xff1a;197、cs.org首先通过在子域的域控机器上打开mmc.exe->连…

Git 版本控制操作

1. 版本回退 Git 能够管理⽂件的历史版本&#xff0c;这是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题&#xff0c;需要在某个特定的历史版本重新开始&#xff0c;这个时候&#xff0c;就需要版本回退的功能了。 执⾏ git reset 命令⽤于回退版…

Radiance Field Learners As UAV First-Person Viewers 翻译

作为无人机第一人称视角的辐射场学习者 引言。第一人称视角&#xff08;FPV&#xff09;在无人机飞行轨迹的革新方面具有巨大的潜力&#xff0c;为复杂建筑结构的导航提供了一条令人振奋的途径。然而&#xff0c;传统的神经辐射场&#xff08;NeRF&#xff09;方法面临着诸如每…

Python 爬虫入门(十二):正则表达式「详细介绍」

Python 爬虫入门&#xff08;十二&#xff09;&#xff1a;正则表达式 前言一、正则表达式的用途二、正则表达式的基本组成元素2.1 特殊字符2.2 量词2.3 位置锚点2.4 断言2.5 字符集2.6 字符类2.6.1 基本字符类2.6.2 常见字符类简写2.6.3 POSIX字符类2.6.4 组合使用 三、 正则表…

用Python移除PowerPoint演示文稿中的所有超链接

在某些PPT使用场景中&#xff0c;比如需要打印幻灯片或者超链接已失效时&#xff0c;演示文稿中的超链接可能会成为一种干扰。这时我们需要移除PowerPoint演示文稿中的超链接&#xff0c;以确保演示的连贯性和专业性。通过使用Python&#xff0c;我们可以高效地批量处理这一任务…

Java | Leetcode Java题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canMeasureWater(int x, int y, int z) {if (x y < z) {return false;}if (x 0 || y 0) {return z 0 || x y z;}return z % gcd(x, y) 0;}public int gcd(int x, int y) {int remainder x % y;w…

提升录制效率,这些录屏软件快捷键你不可不知

我们工作、学习及娱乐中不可或缺的工具有很多&#xff0c;别的不知道肯定有录屏工具的一席之地吧。如果平常频繁的使用这个工具想要它更高效那不妨试试使用录屏快捷键&#xff0c;这次我们来讨论下大家都在用的那些录屏工具吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsof…

案例分享—国外简洁UI设计界面赏析

简洁的页面遵循“少即是多”的设计哲学&#xff0c;强调通过精简元素、色彩和布局来突出核心功能&#xff0c;使设计作品更加直观易用&#xff0c;提升用户体验&#xff1b; 深受现代主义与极简主义思潮影响&#xff0c;这些流派鼓励去除冗余&#xff0c;追求形式与功能的完美结…