Linux命令进阶

grep 从文件中搜索字符串

grep "字符串" 文件
参数:
-n 显示行号
-R 递归及子目录

例如

grep "hello" log.c
grep "main" * -nR

find 在指定路径下搜索文件

find 路径 -name 文件名
find /home/linux -name hello.c  //在/home/linux目录下搜索hello.c

管道连接符 |

说明:管道就是将一个命令的输出当作另一个命令的输入,通过|连接多个命令

(理解:后一个命令的操作,是在前一个命令的基础上进行的)

cat /etc/passwd | grep "linux"

ls /usr/include | grep "stdio.h"

head 显示文件开头的内容

head -行数 文件

head -10 /etc/passwd 显示/etc/passwd文件开头前10行

tail 显示文件尾部指定的行数

tail -行数 文件

tail -1 /etc/passwd 显示/etc/passwd文件最后一行的信息

cut 字符串裁剪函数

cut -d "分割字符" -f 字段
参数:
-d 指定我们的分割字符
-f 指定我们显示的区域

tail -1 /etc/passwd | cut -d ":" -f 1,3,4

grep "linux" /etc/passwd | cut -d ":" -f 1,3

wc:统计某个文件的行数/单词个数/字节数

-l 显示一个文件的行数
-w 显示一个文件的单词个数
-c 显示一个文件的字节数
wc -l log.txt
wc -w log.txt
wc -c log.txt

shell中的通配符

通配符含义实例
*匹配任意长度的字符串ls file_*.txt
?匹配一个长度的字符串ls file_?.txt
[…]匹配其中指定的一个字符ls file_[otr].txt
[-]匹配指定的一个字符范围ls file_[a-z}.txt
[^…]除了其中指定的字符,其他均可匹配ls file_[^obt].txt

输入/输出重定向

输入/输出重定向是改变 shell 命令或程序默认的标准输入/输出目标,重新定向到新的目标。

Linux 中默认的标准输入定义为键盘,标准输出定义为终端窗口

用户可以为当前操作改变输入或输出,迫使某个特定命令的输入或输出来源作为外部文件。

输出重定向(>)

含义:把本来应该输出到屏幕上的正确的数据,修改输出到其他的地方(文件)

echo "hello world" > log [把hello world写入log.txt文件中,写入前会把log.txt文件内容清除
echo "123" >>log [追加方式]

输入重定向(<)

含义:改变默认的输入源,把本来应该从键盘输入的信息该从其他位置获取。(例如从文件中)

cat /etc/passwd
cat </etc/passwd

错误重定向(2>)

含义:把本来应该输出到屏幕上错误的信息改输出到文件中

das123 2> log.txt

命令置换

含义:将一个命令的输出当作另一个命令的参数,我们叫做命令置换

command1 `command2` command2的输出当作command1的参数
注:这里不是单引号,而是反撒号 esc下面的键为反撒号
find `pwd` -name hello.c
ls `pws`

sed命令详解

采用的是流编辑模式,最明显的特点是,在sed处理数据之前,需要预先提供一组规则,sed会按照此规则来编辑数据

使用场景

  • 超大文件处理
  • 对文件进行批量增加,替换等
  • 有规律的文本,例如 以分号,空格等分隔的日志文件等

说明

sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在-个文本文件中,此命令执行数据的顺序如下:

  • 每次仅读取一行内容;
  • 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据
  • 将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

格式:

sed [options] '{command}[flags]' [filename]

[]中的数据必须存在 {}内容可省略

options 命令选项

-e 脚本命令 该选项会将其后面的脚本命令添加到已有的命令中
-f 脚本文件 该选项会将其文件中的脚本命令添加到已有的命令中
-n 					只显示匹配的行
-i 					直接对原文件进行操作,会修改原文件内容。sed命令默认不修改文件

{command}[flags]

sed 内部常用命令

i:insert,在制定或匹配到的行前面添加新行内容为string
a:append,在指定或匹配到的行后面追加新行,内容为string
d: delete,删除符合地址定界条件的的行
p: print,默认 sed 对模式空间内的处理完毕后,将输出的结果输出在标准输出
添加 p 命令,相当于输出了原文,又一次输出了模式匹配处理后的内容。
s: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串,如果修饰符为 g 则为全部替换。

flags

n:1~512之间的数字 表示指定要替换的字符串出现第几次时才进行替换
  例如,一行中有 3个 A,但用户只想替换第二个 A,这是就用到这个标记
  
g:对数据中所有匹配到的内容进行替换,如果没有g,则只会在第一次匹配成功时做替换操作
  例如,一行数据中有3个A,则只会替换第一个A;
  
P:会打印与替换命令中指定的模式匹配的行。此标记通常与-n选项一起使用

场景1 :显示 /etc/passwd 第三行的信息

sed -n '3p' /etc/passwd

3代表行数,p代表输出结果

场景2:在 /etc/passwd 中第一行前添加一行内容为“Good”

sed -e '1iGood' /etc/passwd

1代表第一行,i代表insert插入的意思。表示在第1行前插入新的字符串

场景3: 把/etc/passwd 中使用名字为root的字符串改为 class

格式:

sed 's/旧字符串/新字符串/g' 文件名
功能:替换所有的字符串
sed 's/旧字符串/新字符串/2' 文件名
功能:替换每行中第二次出现该字符串的数据
sed 's/root/class/g' /etc/passwd

场景4:删除 /etc/passwd 中内容并列出行号,并且将第2-5行删除

cat -n /etc/passwd sed '2,5d'

场景5:把 /etc/passwd 文件中root用户的信息带行号的形式重定向到log.txt文件中

要求把log.txt 文件中root替换我linux,并且log.txt中保存替换后的文件

cat /etc/passwd | grep -n "root">log.txt
sed -i 's/root/linux/g' log.txt

awk命令

AWVK 语言的基本功能是在文件或者字符串中基于指定规则浏览和抽取信息。awk 抽取信息后,才能对其他文本操作。它是一个强大的文本分析工具。简单来说 awk 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。之所以叫 AWK 是因为其取了三位创始人Alfred Aho,Peter Weinberger,和 Brian Kernighan 的 Family Name 的首字符。

sed命令常用于整行的处理。而awk更倾向与包一行分为多个‘字段’然后进行处理

awk的适用场景:

  • 超大文件处理
  • 输出格式化的文本报表
  • 执行算数运算
  • 执行字符串操作等

语法

awk [options] 'pattern {action}' filename

options: 可选参数

-F 指明输入时用到的字段分隔符,默认分隔符为空格或tab键

-V (var=Value)自定义变量

pattern: 匹配规则

action: 某些计算操作/格式化数据/流控制语句

filename: 文件名

例:

awk -F “:” ‘{print $1}’ /etc/passwd

输出第一列

基础用法:

awk '条件1 {动作1} 条件2 {动作2} ...' 文件名

条件:一般使用关系表达式作为条件

动作(Action):格式化输出、流程控制语句

awk流程控制用法

awk BEGIN关键字

介绍:默认情况下,awk 会从输入中读取一行文本,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用 BEGIN 关键字。

格式:

BEGIN{commands}
功能:在执行awk命令前,先执行BEGIN对应的动作

用法:

awk END关键字

和 BEGIN 关键字相对应,END 关键字允许我们指定一些脚本命令,awk 会在读完数据后执行它们

cat /etc/passwd | tail -1 | awk -F ":" 'BEGIN {print "The data3 File Contents:"} {print $2} END {print "End of File"}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

精选优质不收费数据恢复软件全解析

数据已经成为了我们生活和工作中无比珍贵的资产。然而我们在使用中总会因为各种意外导致数据丢失。今天&#xff0c;我们就来深入了解一些优秀的不收费的数据恢复软件&#xff0c;看看他们如果帮我们力挽狂澜。 1.福晰数据恢复 链接直达&#xff1a;https://www.pdf365.cn/fo…

基于Arduino的简易收音机

DIY FM收音机&#xff1a;使用Arduino和Si4703模块打造 引言 在本项目中&#xff0c;我们将使用Arduino Nano和Si4703 FM调谐模块来构建一个功能完备的FM收音机接收器。这个易于跟随的指南非常适合想要深入无线电频率和无线通信世界的业余爱好者和电子爱好者。 Si4703模块是…

西门子网络程序传输,无需开通网络驱动器直接接入底层,支持各类数控 如发那科、三菱 、新代、海德汉、广数、精雕、马扎克等等

有关西门子的程序传输问题&#xff0c;大家一般是通过文件共享、ftp、网络驱动器等方式&#xff0c;其中828D还需要授权开通网络启动器 下面介绍一种方式直接进入西门子Linux底层系统实现和NCK的文件交互功能 软件截图如下 功能表如下 机床程序上载至电脑 电脑程序下传…

2. MySQL数据库基础

一、数据库的操作 1. 显示当前的数据库 SHOW DATABASES;2. 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification...];//create_specification包括&#xff1a;[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_n…

性能测试最佳实践的思考

性能测试是软件开发和应用过程中至关重要的环节。它是评估系统性能、稳定性和可扩展性的有效手段&#xff0c;可以确保软件在真实环境中高效运行。在现代技术快速发展的时代&#xff0c;性能测试的重要性愈发显著。 性能测试在软件开发和应用过程中的重要性不可低估。它是保障…

RabbitMQ消息队列MQ脑裂(网络分区)整理分析

文章目录 RabbitMQ 的集群架构基础什么是MQ脑裂检测网络分区RabbitMQ 网络分区导致脑裂的原因• 多个节点认为自己是主节点&#xff1a;• 节点间状态不一致&#xff1a;• 集群的不可用性和错误恢复&#xff1a; RabbitMQ 网络分区引发脑裂的常见场景队列镜像不同步HA&#xf…

【H2O2|全栈】JS入门知识(二)

目录 JS 前言 准备工作 运算符 算数运算符 比较运算符 自增、自减运算符 逻辑运算符 运算符的优先级 分支语句 if-else语句 switch语句 三元表达式 结束语 JS 前言 本系列博客主要分享JavaScript的基础语法知识&#xff0c;本期为第二期&#xff0c;包含一些简…

网络变压器在楼宇电梯控制器中的重要作用

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是网络变压器在楼宇电梯控制器中的重要作用... 网络变压器在楼宇电梯控制器中起着至关重要的作用,工程师总结有以下是其主要应用方面&#xff1a; 一、信号隔离与增强 络变压器可以实现信号的隔离&#…

Qt-界面优化选择器的用法(70)

目录 描述 使用 类型选择器 ID 选择器 并集选择器 子控件选择器 伪控制器 描述 QSS 的选择器⽀持以下⼏种 选择器⽰例说明全局选择器*选择所有的 widget.类型选择器 (type selector)QPushButton选择所有的 QPushButton 和其⼦类的控件.类选择器 (class selector).QPus…

【Golang】关于Go语言中的定时器原理与实战应用

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

QRTCN区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测

区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测 目录 区间预测 | Matlab实现QRTCN时间卷积神经网络分位数回归区间预测预测效果基本介绍模型特性程序设计参考资料预测效果 基本介绍 Matlab实现QRTCN时间卷积神经网络分位数回归区间预测 QRTCN(Quantile Regres…

2.mybatis-plus3.x的使用

官网&#xff1a;简介 | MyBatis-Plushttps://baomidou.com/introduce/ 3.X版本插件使用、 1. 分页插件 配置插件&#xff08;不能用的情况去官网看看最新的&#xff09; Configuration MapperScan("scan.your.mapper.package") public class MybatisPlusConfig …

Django 定义使用模型,并添加数据

教材&#xff1a; Python web企业级项目开发教程&#xff08;黑马程序员&#xff09;第三章 模型 实验步骤&#xff1a; 1.创建项目和应用 前置步骤可看前文&#xff0c;进入到指定文件位置后创建 django-admin startproject mysite python manage.py startapp app01 2.注册…

DBA | 如何将 .bak 的数据库备份文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 原文链接&#xff1a;DBA | 如何将 .bak 的数据库备份文件导入到SQL Server 数据库中? 如何将&#xff08;.bak&#xff09;的SQL Server 数据库备份文件导入到当前数据库中? Step 1.登录到 Sql…

【专题】智启未来:新质生产力引擎驱动下的智能制造行业革新报告合集PDF分享(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p37856 在当今全球经济格局深刻变革的大背景下&#xff0c;制造业作为国家经济的基石&#xff0c;正处在高质量发展的关键历史时期。智能决策作为一股崭新的力量&#xff0c;正逐步成为推动制造业数智化转型的强大新动能。众多制造企…

每日OJ题_牛客_对称之美_哈希_C++_Java

目录 牛客_对称之美_哈希 题目解析 C代码 Java代码 牛客_对称之美_哈希 对称之美 (nowcoder.com) 描述&#xff1a; 给出n个字符串&#xff0c;从第1个字符串一直到第n个字符串每个串取一个字母来构成一个新字符串&#xff0c;新字符串的第i个字母只能从第i行的字…

安卓13屏蔽蓝牙匹配对话框 自动匹配 android13屏蔽蓝牙匹配对话框 自动匹配

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 设置 蓝牙连接的时候,会有匹配对话框提示。我们来实现自动配对。 2.问题分析 这里我们是通过点击操作来实现功能的,所以我们思路可以是自动点击功能的实现。 3.代码分…

Ubuntu 24.04 在 BPI-F3 上通过 SD 卡安装并从 NVME 运行

github 代码&#xff1a; https://github.com/rcman/BPI-F3 Ubuntu 24.04 现在正在我的 BPI-F3 上运行。很快会为 YouTube 制作一个视频。 这应该适用于任何版本的 Linux&#xff0c;仅在 Ubuntu 24.04 上测试过 入门 下载 Bianbu映像并使用您最喜欢的工具将其映像到微型 SD 卡…

选择排序-求和表达式

概述 选择排序算法复杂度计算&#xff0c;用到了求和表达式。&#xff08;以前学过&#xff0c;现在都忘了&#xff0c;记录一下&#xff09; 理解求和表达式的关键在于逐步拆分和简化。让我们一步一步来详细解释这个求和表达式&#xff1a; 求和表达式 求和表达式 分步求解 …

ESP32C3 开发板在Linux环境下,进行JTAG 调试演示-启明云端乐鑫代理商

JTAG 调试教程 本教程主要演示 esp32c3 开发板在 linux 环境下&#xff0c;通过 vscode 的 esp-idf 插件使用 jtag 调试工具。 esp32c3 不但内置了USB-JTAG&#xff0c;还内置了USB-SERIAL&#xff0c;仅需要一根USB线即可实现下载和调试仿真。 下面演示调试仿真的过程。 创…