当前位置: 首页 > news >正文

sed awk使用简介

简介

本文主要介绍 Linux 系统的两个神级工具:sed 和 awk ,他们是Linux高手们必备的技能,很值得我们去研究的东西。

这里是我在网上书上收集的相关资料,因为这两个工具很有名也很重要,所以这些资料会帮助我更好的了解和熟悉它们。

什么是sed

在《sed and awk》一书中(1.2 A Stream Editor)的解释是:

Sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同;同时它又是面向字符流的,输入的字符流经过Sed的处理后输出。这两个特性使得Sed成为命令行下面非常有用的一个处理工具。

Sed本身是一个管道命令,可以分析 standard input 的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、心中、选取特定行等功能。

基本概念

sed命令的语法如下所示:

sed [-nefr] [动作]

参数说明:

-n : 使用安静模式,一般所有来自STDIN的数据会被列出到屏幕上,但是 -n 在可以只列出经过 sed 处理过的那一行。

-e : 直接在命令行模式上进行 sed 的动作编辑。

-f : 直接将 sed 的动作卸载一个文件内, -f filename 则可以执行 filename 内的 sed 动作。

-r : sed 的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)。

-i : 直接修改读取的文件内容,而不是由屏幕输出。

动作说明: [n1],[n2] function

n1,n2:不见得会存在,一般代表选择进行动作的行数。举例来说:如果我的动作是需要在 10 到 20 行之间进行的,则"10,20[动作行为]"

function 有下面这些参数:

a:新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)。

c:替换,c 的后面可以接字符串,这些字符串可以替换n1,n2之间的行!

d:删除,因为是删除,所以 d 后面通常不接任何参数。

i:插入,i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)。

p:打印,也就是将某个选择的数据打印出来,通常 p 会与参数 sed -n 一起运行。

s:替换,可以直接进行替换工作。通常这个 s 的动作可以匹配正则表达式!例如:1,20s/old/new/g 就是。

关于 sed 的一些常见使用

以行为单位的新增或删除功能

案例(一)

nl /etc/passwd | sed '2,5d'

说明:

  • sed 的动作为 ‘2,5d’,那个 d 就是删除,命令运行的效果就是把2~5行给删除。

  • 需要注意的是,原本应该是要执行 sed -e 才对,没有 -e 也行。

  • 另外还需要注意的一点:sed 后面接的动作,请务必要以 ‘’ 两个单引号括住。

  • 如果你只想删除第二行,那么命令就是:nl /etc/passwd | sed ‘2d’。

  • 如果你想删除第三行到最后一行,那么就可以这么写:nl /etc/passwd | sed ‘3,$d’

注:$表示最后一行。

案例(二)

nl /etc/passwd | sed '2a drink tea'

说明:

  • 命令执行的效果就是在第二行后面(也就是第三行)加上"drink tea"字样。

  • 如果你想在第二行前面加上字符串,那么你可以这样:nl /etc/passwd | sed ‘2i drink tea’

注:2a 中的 a 是指第二行后面,而 2i 中的 i 则是指第二行的前面。

案例(三)

nl /etc/passwd | sed '2a drink tea or ......\
drink beer'

说明:

  • 上面的命令的执行效果是在第二行后面加入2行字。

  • 在每一行的后面必须要以反斜杠 来进行新行的增加。

以行为单位的替换与显示功能

案例(一)

nl /etc/passwd | sed '2, 5c No 2-5 number'

说明:

  • 上面的命令的执行效果是将第2~5行的内容替换成"No 2-5 number"

案例(二)

nl /etc/passwd | sed -n '5,7p'

说明:

  • 上面的命令执行的效果是仅列出文件中的第5~7行的内容。

  • 命令中的 -n 代表的是安静模式!但是这个参数建议加上。

案例(三)

sed 's/要被替换的内容/新的内容/g'

说明:

  • 以上命令执行的效果就是替换掉指定内容。

案例(四)

下面是记录一次获取IP数据的过程:

第一步:先查看源信息,利用 /sbin/ifconfig 查询 IP。

/sbin/ifconfig eth0

注:我们的目的是要获得IP数据,那么先利用关键字找出那一行。

第二步:利用关键字配合 grep 选取出关键的一行数据。

/sbin/ifconfig eth0 | grep 'inet addr'

注:因为只需要IP数据,所以接下来就是把不需要的内容都删掉,那么就需要一个正则表达式来帮助实现:

^.*inet addr:

第三步:将 IP 前面的部分予以删除

/sbin/ifconfig eth0 | grep 'inet addr' |\
sed 's/^.*inet addr://g'

注:上面的命令就把 IP 前面的数据删掉了,那么接下来就是把 IP 后面的数据也删掉,此时的正则表达式则是:

Bcast.*$

第四步:将 IP 后面的部分予以删除

/sbin/ifconfig eth0 | grep 'inet addr' |\
sed 's/^.*inet addr://g' | sed 's/Bcast.*$//g'

这样就能把 IP 截取出来了~~~

案例(五)

这里主要是展示 sed 与正则表达式的配合使用。

假设我想在一个文件(你自己新建或者已有的,主要是测试而已)获取MAN字样的那几行数据,但是#在内的批注我不需要,而且空白行也不要。

第一步:先使用 grep 将关键字 MAN 所在行取出来。

cat /home/man.config | grep 'MAN'

第二步:删除掉批注之后的数据。

cat /home/man.config | grep 'MAN' | sed 's/#.*$//g'

第三步:那么接下来就是把空白行删除掉。

cat /home/man.config | grep 'MAN' | sed 's/#.*$//g' |\
sed '^$/d'

直接修改文件内容(慎重)

首先要特别提醒的是,要练习 sed 修改文件内容的时候不能用任何系统配置文件,最好是自己新建一个测试文本来测试练习。

案例(一)

sed -i 's/\.$/\!/g' test.txt

说明:

  • 上面命令执行效果是利用 sed 将test.txt内的每一行结尾为"." 的换成 !

  • 命令中的 -i 参数可以让你的 sed 直接去修改后面接的文件内容,而不是由屏幕输出。

案例(二)

sed -i '$a # This is a test' test.txt

说明:

  • 上面命令执行的效果是利用 sed 直接在test.txt最后一行加入 “This is a test”。

  • 由于 $ 代表的是最后一行,而 a 的操作是新增,因此该文件最后新增。

什么是 awk

简单来说,awk 是一个数据处理工具。

相比于 sed 常常作用于一整行的处理,awk 则比较倾向于将一行分成数个"字段"来处理。因此,awk 相当适合处理小型数据的数据处理。

对于编程语言来讲,awk 是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务。

基本概念

基本语法

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
  • awk 后面接两个单引号病加上大括号{}来设置想要对数据进行的处理动作。

  • awk 可以处理后续接的文件,也可以读取来自签个命令的 standardoutput。

  • 如前面说的,awk 主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或者[tab]键。 比如:

last -n 5 // 仅取出登陆者的数据前五行(last 可以将登陆者的数据取出来)

如果我还要在这些信息中取出:账号与登陆者的IP,且账号与IP之间以[tab]隔开,那么可以这么改命令:

last -n 5 | awk '{print $1 "\t" $3}'

上面是 awk 最常使用的动作,通过 print 的功能来讲字段的数据列出来,字段的分割则以空格键或者[tab]按键来隔开。

上面的例子中,在每一行的每个字段都是有变量名称的,那就是$1,$2等变量名称。

备注:$1 指的就是第一列,但是 $0 则是代表一整行(第一行)。

上面的例子中整个awk的处理流程:

(1)读入第一行,并将第一行的数据填入$0,$1,$2等变量中;
(2)依据条件类型的限制,判断是否需要进行后面的动作;
(3)昨晚所有的动作与条件类型;
(4)若还有后续的"行"的数据,则重复上面1~3的不知,直到所有的数据都读完为止。
  • 注:awk是以行为一次处理的单位,而以字段最小的处理单位。

对于上面的案例指令 last -n 5 … 来讲,有几点需要注意的:

  • 列出每一行的账号(就是$1)。

  • 列出目前处理的行数(那就是 awk 内的 NR 变量)。

  • 并且说明,该行有多少个字段(就是 awk 内的 NF 变量)。

注意: awk 后续的所有动作都是以单引号 “'” 括住的,由于单引号与双引号都必须是成对的,所以 awk 的格式内容如查想要以 print 打印时,记得非变量的文字部分,包含一小节 printf 提到的格式中,都需要使用双引号来定义出来,因为单引号已是 awk 的命令固定用法了。

last -n 5 | awk '{print $1 "\t lines: " NR "\t lines: " NR "\t columes: " NF}'

awk的一些常见使用

awk 的运算符

  • 大于: >

  • 小于: <

  • 大于或等于: >=

  • 小于或等于: <=

  • 等于: ==

  • 不等于: !=

值得关注的是那个等于 “==” 的符号,因为:

  • 逻辑运算上面也就是所谓的大于,小于,等于等判断式上面,习惯上是以"=="来表示的。

  • 如果是直接给与一个值,例如变量设置时,就直接使用 = 而已。

案例(一)

cat /etc/passwd | \awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'

说明:上面的指令运行的效果是查阅第三列小于10以下的数据,并且仅列出账号与第三列。(在 /etc/passwd 当中是以冒号":"来作为字段的风,该文件中第一字段为账号,第三字段则是UID)

案例(二)

cat /etc/passwd | \awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'

说明:由于案例一中并没有显示出第一行的数据,那么此命令则是把第一行也显示出来了。利用 BEGIN 关键字预先设置 awk 的变量。

案例(三)

此外 awk 还可以进行"计算功能"。

比如有一个文件,内容如下:

name 1st 2nd 3th
小A 1000 1000 1000
小B 2000 2000 2000
小C 3000 3000 3000

那么怎么计算每个人的总额呢?而且还需要格式化输出,那么可以这样思考:

  • 第一行只是说明,所以第一行不要进行加总(NR==1时处理)。

  • 第二行以后就会有加总的情况出现(NR>=2以后处理)。

cat test.txt |awk 'NR==1 {printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4, "Total" } NR>2 {total =  $2 + $3 + $4 ; printf "%10s %10d %10d %10d %10.2f \n", $1, $2, $3, $4, total}'

说明:

  • 所有 awk 的动作(即在{}内的动作),如果有需要多个命令来辅助是,可利用分号";"间隔,或者直接以[Enter]按键来隔开每个命令,上面则是摁了三次。

  • 逻辑运算中,如果是"等于"的情况,则务必使用两个等号"=="!

  • 格式化处输出时,在 printf 的格式设置当中,务必加上 n ,才能实现分行。

  • 与 bash 、shell 的变量不同,在 awk 当中,变量可以直接使用,不需要加上 $ 符号。

相关文章:

sed awk使用简介

简介 本文主要介绍 Linux 系统的两个神级工具&#xff1a;sed 和 awk &#xff0c;他们是Linux高手们必备的技能&#xff0c;很值得我们去研究的东西。 这里是我在网上书上收集的相关资料&#xff0c;因为这两个工具很有名也很重要&#xff0c;所以这些资料会帮助我更好的了解…...

竞赛选题 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…...

idea Terminal 回退历史版本 Git指令 git reset

——————强制回滚历史版本—————— 一、idea Terminal 第一步&#xff1a;复制版本号 &#xff08;右击项目–> Git --> Show History -->选中要回退的版本–>Copy Revision Number&#xff0c;直接复制&#xff1b;&#xff09; 第二步&#xff1a;ide…...

华为云云耀云服务器L实例评测|华为云上安装监控服务Prometheus三件套安装

文章目录 华为云云耀云服务器L实例评测&#xff5c;华为云上试用监控服务Prometheus一、监控服务Prometheus三件套介绍二、华为云主机准备三、Prometheus安装四、Grafana安装五、alertmanager安装六、三个服务的启停管理1. Prometheus、Alertmanager 和 Grafana 启动顺序2. 使用…...

C语言基础知识点(八)联合体和大小端模式

以下程序的输出是&#xff08;&#xff09; union myun {struct { int x, y, z;} u;int k; } a; int main() {a.u.x 4;a.u.y 5;a.u.z 6;a.k 0;printf("%d\n", a.u.x); } 小端模式 数据的低位放在低地址空间&#xff0c;数据的高位放在高地址空间 简记&#xff…...

一个线程运行时发生异常会怎样?

如果一个线程在运行时发生异常而没有被捕获(即未被适当的异常处理代码处理),则会导致以下几种情况之一: 线程终止:线程会立即终止其执行,并将异常信息打印到标准错误输出(System.err)。这通常包括异常的类型、堆栈跟踪信息以及异常消息。 ThreadDeath 异常:在某些情况…...

CSS中去掉li前面的圆点方法

1. 引言 在网页开发中&#xff0c;我们经常会使用无序列表&#xff08;<ul>&#xff09;来展示一系列的项目。默认情况下&#xff0c;每个列表项&#xff08;<li>&#xff09;前面都会有一个圆点作为标记。然而&#xff0c;在某些情况下&#xff0c;我们可能希望去…...

Python:获取当前目录下所有文件夹名称及文件夹下所有文件名称

获取当前目录下所有文件夹名称 def get_group_list(folder_path):group_list []for root, dirs, files in os.walk(folder_path):for dir in dirs:group_list.append(dir)return group_list获取文件夹下所有文件名称 def get_file_list(folder_path, group_name):file_list …...

系统架构设计师-数据库系统(1)

目录 一、数据库模式 1、集中式数据库 2、分布式数据库 二、数据库设计过程 1、E-R模型 2、概念结构设计 3、逻辑结构设计 三、关系代数 1、并交差 2、投影和选择 3、笛卡尔积 4、自然连接 一、数据库模式 1、集中式数据库 三级模式&#xff1a; &#xff08;1&#xff09;外…...

Docker的相关知识介绍以及mac环境的安装

一、什么是Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术&#x…...

Android设计支持库

本文所有的代码均存于 https://github.com/MADMAX110/BitsandPizzas 设计支持库&#xff08;Design Support Library&#xff09;是 Google 在 2015 年的 I/O 大会上发布的全新 Material Design 支持库&#xff0c;在这个 support 库里面主要包含了 8 个新的 Material Design …...

【Java 基础篇】Java实现文件搜索详解

文件搜索是计算机应用中的一个常见任务&#xff0c;它允许用户查找特定文件或目录&#xff0c;以便更轻松地管理文件系统中的内容。在Java中&#xff0c;您可以使用各种方法来实现文件搜索。本文将详细介绍如何使用Java编写文件搜索功能&#xff0c;以及一些相关的内容。 文件…...

会C++还需要再去学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域&#xff0c;对于软件开发和计算机工程师来说&#xff0c;它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…...

vue部分/所有内容全屏切换展示

需求&#xff1a;就是把一个页面的某一部分内容点击全屏操作按钮后全屏展示&#xff0c;并非所有内容全屏&#xff0c;所有内容的话那肯定就所有全屏展示啊&#xff0c;可以做切换 1.部分全屏代码 element.requestFullscreen();这个就是全屏的代码了&#xff0c;注意前面的ele…...

8.gec6818开发板通过并发多线程实现电子相册 智能家居 小游戏三合一完整项目

并发 前面编写的程序都是从mian函数开始&#xff0c;从上往下执行&#xff0c;称为顺序执行 假设一个程序需要I输入 C计算 P输出&#xff0c;以顺序执行三个上述程序&#xff0c;则其执行过程如下&#xff1a; 程序内部的语句是一条一条的执行&#xff0c;如果要运行多个程序…...

角度回归——角度编码方式

文章目录 1.为什么研究角度的编码方式&#xff1f;1.1 角度本身具有周期性1.2 深度学习的损失函数因为角度本身的周期性&#xff0c;在周期性的点上可能产生很大的Loss&#xff0c;造成训练不稳定1.3 那么如何处理边界问题呢&#xff1a;&#xff08;以θ的边界问题为例&#x…...

【C# Programming】值类型、良构类型

值类型 1、值类型 值类型的变量直接包含值。换言之&#xff0c; 变量引用的位置就是值内存中实际存储的位置。 2、引用类型 引用类型的变量存储的是对一个对象实例的引用&#xff08;通常为内存地址)。 复制引用类型的值时&#xff0c;复制的只是引用。这个引用非常小&#xf…...

Linux Day18 TCP_UDP协议及相关知识

一、网络基础概念 1.1 网络 网络是由若干结点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机、 路由器等设备。 1.2 互联网 把多个网络连接起来就构成了互联网。目前最大的互联网就是因特网。 网络设备有&#xff1a;交换机、路由器、…...

【Java 基础篇】Java网络编程实时数据流处理

在现代计算机应用程序中&#xff0c;处理实时数据流是一项关键任务。这种数据流可以是来自传感器、网络、文件或其他源头的数据&#xff0c;需要即时处理并做出相应的决策。Java提供了强大的网络编程工具和库&#xff0c;可以用于处理实时数据流。本文将详细介绍如何使用Java进…...

Oracle 和 mysql 增加字段SQL

在Oracle和MySQL中&#xff0c;可以使用ALTER TABLE语句来增加字段。下面是分别是两种数据库增加字段的SQL示例&#xff1a; 在Oracle中增加字段的SQL示例&#xff1a; ALTER TABLE 表名ADD (新字段名 数据类型);例如&#xff0c;如果要在名为"employees"的表中添加…...

【脚本】 【Linux】循环执行命令

loop.sh #!/bin/bashif [ "" "$1" ]; thenecho 用法: ./loop.sh 命令内容 时间间隔(毫秒) 循环次数(小于0表示无限循环)echo 示例: ./loop.sh "ps -ef" 1000 10exit 0 fiinterval1000 if [ "" ! "$2" ]; thenif echo &quo…...

快速用Python进行数据分析技巧详解

概要 一些小提示和小技巧可能是非常有用的&#xff0c;特别是在编程领域。有时候使用一点点黑客技术&#xff0c;既可以节省时间&#xff0c;还可能挽救“生命”。 一个小小的快捷方式或附加组件有时真是天赐之物&#xff0c;并且可以成为真正的生产力助推器。所以&#xff0…...

BD就业复习第二天

Hbase 1. 架构 HBase&#xff08;Hadoop Database&#xff09;是一个开源的分布式、面向列族&#xff08;Column Family&#xff09;的NoSQL数据库&#xff0c;它是构建在Hadoop之上的。HBase的架构设计旨在处理大规模的数据&#xff0c;特别适用于需要快速读写和随机访问大量…...

大数据Flink(八十五):Window TVF 支持多维数据分析

文章目录 Window TVF 支持多维数据分析 一、Grouping Sets 二、​​​​​​​Rollup...

css-边框原理教程

1. CSS中边框原理 他不是一条直线&#xff0c;根据盒子原理&#xff0c;当边框宽度大于元素的长和宽时&#xff0c;呈现一个梯形和三角形的形状&#xff0c;用如下的代码来实地理解一下边框画法实现的原理 注&#xff1a;学习网址&#xff1a; CSS画几种图形的方法_css画图_老…...

【数据结构】时间、空间复杂度

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 时间、空间复杂度 1. 算法效率3. 时…...

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 理解 SHARE END…...

iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程

文章目录 一、环境准备二、基础软件三、扩展&#xff1a;usb拓展插件 一、环境准备 1、下载VMware虚拟机的壳子&#xff0c;安装并注册软件(可以百度注册码)&#xff0c;最新版本&#xff1a;v17 2、下MacOS系统iOS镜像文件&#xff0c;用于vmware虚拟机安装&#xff0c;当前镜…...

vue3 - Vue 项目处理GitHub Pages 部署后 _plugin-vue_export-helper.js 404

GitHub Demo 地址 在线预览 vue3项目打包后部署到github pages 后&#xff0c;预览网站提示下划线开头的一个文件_plugin-vue_export-helper访问不到&#xff0c;网络请求显示404 处理GitHub Pages 部署 _plugin-vue_export-helper.js 404 https://github.com/rollup/rollup/b…...

一百八十一、Hive——海豚调度HiveSQL任务时当Hive的计算引擎是mr或spark时脚本的区别(踩坑,附截图)

一、目的 当Hive的计算引擎是spark或mr时&#xff0c;发现海豚调度HQL任务的脚本并不同&#xff0c;mr更简洁 二、Hive的计算引擎是Spark时 &#xff08;一&#xff09;海豚调度脚本 #! /bin/bash source /etc/profile nowdatedate --date0 days ago "%Y%m%d" y…...

做集团网站/想建立自己的网站怎么建立

该毕业设计采用了经典的spring mvc&#xff0c;spring&#xff0c;mybatis的框架组合&#xff0c;对于物业公司来说&#xff0c;有助于管理车位信息。 系统分为了两个角色&#xff1a;车主和租客&#xff0c;主要功能包括停车位信息&#xff0c;租赁合同管理&#xff0c;车位申…...

怎么做直播网站/外贸seo

MongoDB分片集群的搭建分片的概念分片集群的优势分片集群包含的组件部署MongoDB分片集群的准备工作配置shard配置Config Server配置 mongos配置复制集进入节点服务器集群配置节点衔接启动mongos指定分片键对集合分片分片的概念 分片&#xff08;sharding)是一种跨多台机器分布数…...

手机网站开发报价/宁波外贸网站推广优化

代码来源&#xff1a; 该代码来自&#xff1a;《机器学习实战》第二章K-近邻算法P31页 digits 文件下数据格式分析&#xff1a; 训练数据的手写体数字个数为 1934 测试的手写体数字个数为 946 该目录下的文件按照规则命名&#xff0c;如文件9_45.txt的分类是9&#xff0c;它是数…...

国内做网站建设好的/环球网最新消息疫情

在hadoop1中NameNode存在一个单点故障问题&#xff0c;也就是说如果NameNode所在的机器发生故障&#xff0c;那么整个集群就将不可用(hadoop1中有个SecorndaryNameNode&#xff0c;但是它并不是NameNode的备份&#xff0c;它只是namenode的一个助理&#xff0c;协助namenode工作…...

关于做网站的了解点/备案域名

如果两台计算机具有相同的名称&#xff0c;就可能会出现此错误信息。一台计算机在子域中&#xff0c;另一台计算机在父域中。转载于:https://blog.51cto.com/412430/648697...

凡科网站投票排行榜是怎么做的/百度app优化

前言 随着互联网的兴起&#xff0c;现在三高(高可用、高性能、高并发)项目是越来越流行。 本次来谈谈高并发。首先假设一个业务场景&#xff1a;数据库中有一条数据&#xff0c;需要获取到当前的值&#xff0c;在当前值的基础上10&#xff0c;然后再更新回去。如果此时有两个线…...