Linux三剑客-sedawk

一、三剑客-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.rhkb.cn/news/407427.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++ Primer Plus习题】3.5

问题: 解答: #include <iostream> using namespace std;int main() {long long populationWorld 0;long long populationChina 0;cout << "请输入全球的人口数:";cin >> populationWorld;cout << "请输入中国的人口数:";cin &g…

XSS- - - DOM 破坏案例与靶场

目录 链接靶场&#xff1a; 第一关 Ma Spaghet 第二关 Jefff 第三关 Ugandan Knuckles 第四关 Ricardo Milos 第五关 Ah Thats Hawt 第六关 Ligma 第七关 Mafia 第八关 Ok, Boomer 链接靶场&#xff1a; XS…

GenAI 的产品:快速行动,但失败

2022 年秋季&#xff0c;我正在做一个很酷的项目。是的&#xff0c;你猜对了——使用公司特定的数据对预先训练的 LLM&#xff08;Bert&#xff09;进行微调。 然而&#xff0c;很快 ChatGPT 就发布了&#xff0c;并席卷了全世界。既然已经有一门非常强大的 LLM 了&#xff0c…

ARM——驱动——inmod加载内核模块

在上一篇文章的代码上添加出错处理 #include <linux/init.h> // 包含初始化宏和函数 #include <linux/kernel.h> // 包含内核函数和变量 #include <linux/fs.h> // 包含文件操作的结构和函数 #include <linux/kdev_t.h> /…

PyTorch——transforms

接着上一篇&#xff0c;我们这一篇讲transforms 1、什么是transform 首先transform是来自PyTorch的一个扩展库——【torchvision】&#xff0c;【torchvision】这个库提供了许多计算机视觉相关的工具和功能&#xff0c;能够在神经网络中&#xff0c;将图像、数据集、预处理模型…

【系统架构设计】软件架构设计(1)

【系统架构设计】软件架构设计&#xff08;1&#xff09; 软件架构概述架构需求与软件质量属性软件架构风格数据流风格批处理序列管道-过滤器2者风格比较 仓库风格--黑板系统 层次系统架构风格二层及三层C/S架构风格MVCMVP 面向服务的架构 软件架构概述 基于架构的软件开发模型…

网络通信tcp

一、udp案例 二、基于tcp: tcp //c/s tcp 客户端: 1.建立连接 socket bind connect 2.通信过程 read write close tcp服务器: 1.建立连接 socket bind listen accept 2.通信过程 read write close connect函数 int connect(int sockfd, con…

postgresql 集群文档

https://www.cnblogs.com/Alicebat/p/14148933.html [命令] Pacemaker 命令 pcs cluster &#xff08;管理节点&#xff09; – Eternal Center PostgreSQL实战之物理复制和逻辑复制&#xff08;五&#xff09;_postgresql 流复制和物理复制-CSDN博客 https://jingyan.baidu…

【Windows】深度学习环境部署

引言 1 Windows环境准备 1.1 VSCode Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的开源代码编辑器。它非常受开发者欢迎&#xff0c;因为它功能强大、扩展性好&#xff0c;并且支持多种编程语言。VSCode 尤其适合 Python 开发&#xff0c;特别是…

网络 通信

一、客户端接收(也可以bind) 1. socket socket 函数 用于创建一个套接字&#xff08;socket&#xff09;&#xff0c;这是网络通信的基础。 它的原型如下&#xff1a;int socket(int domain, int type, int protocol); 参数&#xff1a; domain&#xff1a;指定协议族&…

虚幻5|AI视力系统,听力系统,预测系统(3)预测系统

虚幻5|AI视力系统&#xff0c;听力系统&#xff0c;预测系统&#xff08;2&#xff09;听力系统-CSDN博客 一&#xff0c;添加一个AI预感感官配置 1.选中我们的AIPerception,右侧细节添加一个AI预感感官配置&#xff0c;然后我们把所有感官的年龄都调成5&#xff0c;是所有 2…

全网最简单的Java设计模式【九】策略模式-实战中最常用的设计模式之一

策略模式是一种行为设计模式&#xff0c;它允许你定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可以相互替换。该模式让算法的变化独立于使用算法的客户。在实际开发中&#xff0c;策略模式可以帮助我们减少大量的 if-else 或 switch 条件判断语句&…

premiere2023暴力压缩视频

目录 1. 需求说明2. 压缩流程 1. 需求说明 要将三段视频拼接起来&#xff0c;时长超过了1h&#xff0c;然后压缩到200M以内的视频。 这是三段视频的信息&#xff1a; 合并三个视频文件意味着总时长增加了。较长的视频文件通常也会更大&#xff0c;即使比特率相同。 当我把三段…

vscode 阅读linux内核(vscode+clangd)

此插件曾在vim里用过&#xff0c;非常好用。 首先先在vscode 里下载clangd插件 这只是客户端&#xff0c;还需下载个服务器&#xff08;这在coc插件里也有说明&#xff09; sudo apt install clangd 下载完后可以 clangd --version 查看版本信息&#xff0c;如果能查看&#x…

UE5 日期时间蓝图变量 加减节点

参考链接&#xff1a;Having troubles with DateTime in UE5 - General / Feedback & Requests - Epic Developer Community Forums (unrealengine.com) 直接粘贴到UE5蓝图图表可用。&#xff08;反之相加&#xff0c;用负号操作一下&#xff09; 减号蓝图节点&#xff08;…

8.22-docker的部署及其使用

docker 1.docker环境部署以及语法 [rootdocker ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf> overlay> br_netfilter> EOFoverlaybr_netfilter[rootdocker ~]# modprobe overlay[rootdocker ~]# modprobe br_netfilter[rootdocker ~]# cat /etc/module…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好&#xff0c;我是画画的小强 关于Stable Diffusion 的插画转绘&#xff0c;今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion&#xff0c;关于SD的安装和入门使用可以看看我的往期入门教程…

122-域信息收集应用网络凭据CS插件AdfindBloodHound

参考&#xff1a;【内网安全】域信息收集&应用网络凭据&CS插件&Adfind&BloodHound_ladon adfinder bloodhound-CSDN博客 工作组和域环境 我的理解&#xff1a; 工作组就是还是局域网一样只是大一点里面的电脑很多&#xff0c;每个电脑还是都是单独的电脑没有…

解决arcmap发布影像切片,注册传输数据慢的问题

1、本地服务器进行切片步骤&#xff1a; 开发环境按照正常方案发布影像切片。 2、生产环境切片步骤 a、使用范文等同影像文件范围的矢量面数据&#xff0c;作为切片数据发布切片服务 重点&#xff1a;【服务名称必须一致】 b、获取开发环境切片的切片方案文件conf.xml 重点&am…

SSL/TLS协议信息泄露漏洞修复

概述&#xff1a;CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞&#xff0c;也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法&#xff08;如 3DES&#xff09;的弱点&#xff0c;攻击者可以通过捕获和分析大量的加密流量&#xff0c;可能会恢复明文数…