首页 > 系统相关 >Linux命令进阶

Linux命令进阶

时间:2024-10-16 22:18:28浏览次数:3  
标签:进阶 etc passwd 命令 sed awk Linux txt

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"}

标签:进阶,etc,passwd,命令,sed,awk,Linux,txt
From: https://blog.csdn.net/weixin_42403632/article/details/142993208

相关文章

  • Linux介绍及常用命令
    Linux系统简介1969年,AT&T公司的⻉尔实验室PMIT合作开发的Unix,í在于创建⼀个⽤于⼤型、并⾏、多⽤户的操作系统Unix的推⼴:从学校⾛进企业Unix的版本要两个:AT&TSystemV——就是俗称的系统5BerkleySoftwareDistribution(BSD)linux是一种操作系统1991......
  • Linux服务器上安装git(运维向)
    (1).参考文献官网在线教程:https://git-scm.com/book/zh/v2官方网站:https://git-scm.com/(2).实验环境2核2GCentOS7.6.1810(3).安装git1)yum或dnf安装[root@VM-0-17-centos~]#dnf-yinstallgit-all2)源码安装安装依赖包[root@VM-0-17-centos~]#dnf......
  • Linux历史
    Linux于1991年由芬兰学生LinusTorvalds作为个人项目开始,旨在创建一个新的免费操作系统内核。在其历史发展中,Linux内核经历了持续的增长。自1991年首次发布源代码以来,Linux内核从少量的C语言文件,且受限于禁止商业发行的许可,逐步发展到2018年发布的4.15版本,其......
  • 第2课笔记 linux系统指令
    测试分类linux虚拟机搭建linux命令:一、linux介绍1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统;注解:(1)免费:不要钱(2)源代码公开(3)多用户:可以在不同用户操作(4)多任务:同时执行多个任务......
  • 前端开发设计模式——命令模式
    目录一、命令模式的定义和特点1.定义:         2. 特点:二、命令模式的结构与原理1.结构:2.原理:三、命令模式的实现方式1.定义接口命令:2.创建具体的命令类:3.定义接收者:4.创建调用者:四、命令模式的使用场景1.界面按钮的点击操作:    1.1 ......
  • 【DBA Part03】国产Linux上Oracle RAC安装-升级-ADG-迁移
    本阶段内容如下:01.国产统信UOS-Oracle19c安装配置02.国产龙蜥AnolisOS-Oracle19cRAC集群安装配置03.Linux-Oracle11gR2数据库升级到Oracle19C04.Linux-Oracle11gR2RAC数据库升级到Oracle19cRAC05.Linux-Oracle19cADG容灾配置(1+1+1级联)06.OracleXTTS跨平台数据库迁移0......
  • 【DBA Part01】国产Linux上安装Oracle进行数据迁移
    内容如下:1.1.生产环境RHEL/OELLinux8+Oracle11gR2安装配置1.2.国产麒麟操作系统+Oracle11gR2安装配置1.3.国产麒麟操作系统+Oracle11gR2RAC集群安装配置1.4.Oracle11gR2迁移到国产麒麟操作系统(单机/RAC)本阶段课程项目需求说明:某单位原有两套核心业务fgeduwx:itpux-com,运......
  • linux命令
    一、linux介绍1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统;注解:(1)免费:不要钱(2)源代码公开(3)多用户:可以在不同用户操作(4)多任务:同时执行多个任务(5)多线程:支多个线程同时工作(6)多cpu:系......
  • php部分函数及命令
    lsls:这是一个在Unix/Linux系统中广泛使用的命令,用于列出目录内容。file_get_contents()file_get_contents()把整个文件读入一个字符串中。<?phpechofile_get_contents("test.txt");?>将输出这个文本的内容preg_matchpreg_match函数用于执行一个正则表达式匹......
  • Linux命令(10.16)
    linux命令ifconfig查看IP地址serviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态ssh+ip地址链接虚拟机su切换用户名su+root切换超级用户cat/etc......