Linux基础三剑客

一、grep:文本搜索工具

-c    只输出匹配的行数

-i     不区分大小写

-v    过滤掉包含指定字符串的行

-s    不显示不存在或无匹配的文本的错误信息

-w    只显示匹配的整个单词,而不是字符串的一部分

-n    显示匹配行及行号

-l      只列出匹配的文件名

-L     列出不匹配的文件名

例:

grep -c root  /etc/passwd    如果包含root字符串在文件中有两行,显示为2

grep -i root /etc/passwd       显示出root字符串的行,包含其大小写

grep -v root /etc/passwd      显示除含有root字符串的行

grep ‘test’ d*            显示所有以d开头的文件中包含test字符串的行

grep ‘^$‘ /etc/passwd    显示passwd文件中的空行

grep ‘test‘  aa bb cc        显示在aa,bb,cc文件中匹配test的行

正则表达式的主要参数:

\        忽略正则表达式中特殊字符的原有含义

[]        单个字符,如[a]即[a]符合要求

[-]        范围,如[a-z],即a,b,c一直到z都符合要求

grep ‘[a-z]\{5\}‘ aa    显示所有包含每个字符串至少有5个连续小写字符的字符串的行,a-z都可以

 grep ‘w\(es\)t.*\1‘ aa    如果west被匹配,则es被存储到内存中,并标记为1,然后搜索任意个字符(.*), 这些字符后面紧跟着另外一个es(\1),找到就显示该行。例:west.es  west.esdd.es west.aa.es

grep test /mnt/*        目录下搜索带字符串test的文件

grep -l test /mnt/*        只列出匹配的文件名

grep -L test /mnt/*        列出不匹配的文件名

[[:alpha:]]        单个字母

[[:lower:]]        单个小写字母

[[:upper:]]        单个大写字母

[[:alnum:]]        单个字母或数字

[[:punct:]]        单个符号,不包含数字,字母以及空格

[[:digit:]]            数字

[[:space:]]        空格

例:grep ‘5[[:upper:]][[:upper:]]‘ aa        显示以5开头以两个大写字母结尾的行

二、sed:文本处理工具

-u        展示修改后的文本内容,但不是真的改

-i          直接修改文件,不显示内容

sed ‘1d‘ file        删除第一行

sed ‘2,$d‘ file           删除第二行到最后一行

sed ‘1a play lol‘ file     第一行后面增加字符串"play lol"

sed ‘5i go die‘ file        在第5行前添加"go die"

sed ‘1c Hi‘ file        第一行代替为Hi

sed -n 2,‘$‘p file        显示第二行到最后一行

sed ‘s/^.*asd.*$/lizekang/g‘ file    匹配asd字符,并修改整行为lizekang

sed ‘14c [file]‘ file        修改14行整行为[file]

sed -n ‘/^\//p‘ file        显示以/开头的行(如果没有-n选项,则显示file中的所有内容和/开头的行两份,-n模式将其他行过滤掉,只显示/开头的行)

sed ‘/^$/d‘ fiel        删除文件中的空白行

sed ‘/^#/d‘ file         删除文件开头的#号

sed ‘s/^[[:spqce:]]*//g‘ fiel        删除文件行首的空格

三、awk:文本分析工具

-F(分割词):不添加此参数默认以空格分割。

‘{print $1}‘ :必要字段,输出具体第几段,$NF表示最后一个元素。

awk ‘{print NR,$0}‘ 在每行前面加上行号。

awk ‘{if (NR<=3+1 && NR>=2) print $0}‘ 输出第二行到第四行。

netstat -an|awk ‘/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}‘

/^tcp/  滤出tcp开头的记录,屏蔽udp,socket等无关记录。

state[]   相当于定义一个叫state的数组

NF        表示记录的字段数

state[$NF]   表示数组元素的值,如上就是state[TIME_WAIT]的连接数

++state[$NF]    上面的连接数加1

下面是awk的一些练习:

1. 用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt);

awk ‘{print $0}‘ test.txt

2. 查找所有包含’bash’的行;

awk ‘/bash/‘ test.txt

3. 用’:’作为分隔符,查找第三段等于0的行;

awk -F ‘:‘ ‘$3=="0"‘ test.txt

4. 用’:’作为分隔符,查找第一段为’root’的行,并把该段的’root’换成’toor’(可以连同sed一起使用);

awk -F ‘:‘ ‘$1=="root"‘ test.txt | sed ‘s/root/root/g‘

5. 用’:’作为分隔符,打印最后一段;

awk -F ‘:‘ ‘{print $NF}‘ text.txt

6. 打印行数大于20的所有行;

awk -F ‘:‘ ‘NR>20‘ test.txt

7. 用’:’作为分隔符,打印所有第三段小于第四段的行;

awk -F ‘:‘ ‘$3<$4‘ test.txt

8. 用’:’作为分隔符,打印第一段以及最后一段,并且中间用’@’连接 (例如,第一行应该是这样的形式 “[email protected]/bin/bash”;

awk -F ‘:‘ ‘{print $1"@"$NF}‘ test.txt

9. 用’:’作为分隔符,把整个文档的第四段相加,求和;

awk -F ‘:‘ ‘{(sum+=$4)}; END {print sum}‘ test.txt

时间: 2024-10-26 22:46:51

Linux基础三剑客的相关文章

linux基础命令--笔记

linux基础命令--笔记 一.   1  . --help 命令简单帮助 2. man 查看命令复杂帮助  (非内置命令) 3  . help (bash的内置命令)如 :help cd  .help pwd   help  内置命令可用man cd  等查看. 4  . ls==list 查看目录列表 5 .  mkdir   == make directory  创建目录.例如:mkdir /date -p 递归创建目录 :mk 6  .  cd      ==change directo

一篇文章带你入门Linux——马哥Linux基础学习笔记

1.课程体系: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4layer 7layer ha: 分布式: zookeeper 分布式文件系统 虚拟化技术: xen kvm Openstack:IAAS云: 运维工具: ansible puppet(ruby), saltstack(python) 监控工具: zabbix 大数据处理: hadoop spark, stor

linux 基础 文件系统 用户权限

描述Linux系统的启动过程? 1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sysinit 初始化系统(设置主机名 设置ip) 8.根据运行级别启动对应的软件(开机自启动软件) 9.运行mingetty显示登录界面 Linux系统的启动过程 临时修改 [[email protected] ~]# alias rm='echo command not found' [[email 

linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)

    运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验环境: 系统:CentOS 7.2 网卡张数:双网卡 linux文本三剑客之grep 获取ifconfig输出中的IP地址 ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>.(\

Linux基础命令(之一)详解

Linux基础命令(之一)详解 学习linux的朋友都知道,系统大多数操作都是命令行的操作方式,当然如今也有图形化界面的操作方式,但是多数情况下仍然使用命令的操作模式,所以命令的作用与用法是成为学好.学会Linux系统的必备前提,也是重点之一,所以今天来聊一聊一些基础命令的用法与其作用. 1.系统关机或重启命令(小白也必须要会的) shutdown (win 系统也有) 常用参数:shutdown -h (halt) 直接关机(关闭电源) shutdown -h  now[+10]    现在关

linux基础命令——tree

Linux基础命令--tree 编辑文章 -d :只显示目录,不显示其目录下的子文件 -L level:显示第几级 图片描述 显示以rc开头的 备份: 创建多级目录: -v:可以看过程

Linux基础之磁盘管理

 Linux基础之磁盘管理         关于Linux中磁盘管理我们应该从以下四个方面入手,去了解和学习磁盘管理的知识. 第一点 磁盘的结构--硬盘         硬盘的参数 结构:磁盘的盘片,磁头,马达(机械键盘) 类型:固态硬盘(SSB)和机械硬盘 接口:早期的IDE接口,现在的SATA,SCSI,SAS 还有容量,转速,传输速度,缓存等. 硬盘存储术语 head: 磁头 track: 磁道 cylinder: 柱面 secotr: 扇区  512bytes(字节) 第二点 磁盘的分区

Linux 基础入门----推荐课程

Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https://www.shiyanlou.com/courses/1/labs/1/document 第2节 基本概念及操作 https://www.shiyanlou.com/courses/1/labs/2/document 第3节 用户及文件权限管理 https://www.shiyanlou.com/

1、linux基础知识

第一天linux基础知识 1:linux操作系统组成 linux内核+GNU工具=完整的类UNIX系统 GNU工具(GNU软件是通过GNU项目发布的软件,它是一种根据GNU软件包的README手册以及自由软件指南开发的软件,大多数GNU软件是免费分发的,但不是所有的都这样,然而,所有的GNU软件必须是自由软件.) 2:linux发行版  slackware debian  reehad  Gentoo等 3:linux哲学思想 一切皆文件(硬件也已文件的形式展现在操作系统中) 小型,单一用途程序