GNU sed

Linux阶段练习(1)

坚强是说给别人听的谎言 提交于 2020-12-31 14:20:12
1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法) # cat /proc/meminfo | grep -i '^s' # grep '^[sS]' /proc/meminfo 2、显示/etc/passwd文件中不以/bin/bash结尾的行 # grep -E '/bin/bash$' /etc/passwd 3、显示用户wang默认的shell程序 # grep '^wang' /etc/passwd | grep -oE '/s?bin.*/.*$' # grep '^wang' /etc/passwd | cut -d: -f7 4、找出/etc/passwd中的两位或三位数 # grep -Eo '[0-9]{2,3}' /etc/passwd 5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行 # grep -E '^[[:space:]]+[^[:space:]]+' /etc/grub2.cfg 6、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行 # netstat -ant |grep -E 'LISTEN[[:space:]]+$' 7、显示CentOS7上所有系统用户的用户名和UID # cat /etc/passwd|grep -E

sed

萝らか妹 提交于 2020-12-31 11:40:51
sed文本编辑器(非交互) 逐行处理编辑器 sed 默认会显示全文 sed [选项] '条件指令' 文件 如果没有条件 即修改所有 选项 -r #使sed支持扩展正则 -n #屏蔽默认的输出 -i #修改原文件 条件 1 行号 2 /支持正则/ 3 没有条件 所有 指令 增a add 删d delete 改s substitution 查p print p 打印 ]# sed -n '3p' /etc/passwd ]# sed '3p' /etc/passwd ]# sed -n '3p;5p;8p' /etc/passwd #分号隔开 第三行 第五行 第八行 ]# sed -n '/root/p' /etc/passwd ]# sed -n '2,5p' #打印第二到第五行 ]# sed -n '4,+10p' #打印第四行 以及后面的十行 ]# sed -n 'p;n' 文件 #奇数行 ]# sed -n 'n;p' 文件 #偶数行 ]# sed -n '$=' 文件 #统计行数 d 删除 sed '2d' 文件 sed 'd' 文件 s 替换/删除 #s的替换符号 可以替换为任意符号 ]# sed 's/old/new/' 文件 #只能替换第一个 ]# sed 's/old/new/g' 文件 #替换所有 ]# sed 's/old/new/2' 文件 #替换第二个 ]#

zabbix--自动注册

允我心安 提交于 2020-12-30 09:01:56
Active agent自动注册 agent 自动注册就是实现一台新的服务器配置好 agent 端,自动在服务器端注册,无需在服务器上进行手动配置便可以直接启动对新的host的监控。 参考官档: https://www.zabbix.com/documentation/4.0/zh/manual/discovery/auto_registration 具体步骤: agent 端 ,首先在 agent 端安装zabbix-agent ,然后配置server端地址、agent端主机名等 # vim /etc/zabbix/ zabbix_agentd.conf Server = 120.79 .xx.xx ServerActive = 120.79 .xx.xx: 10051 Hostname = courtoap.net HostMetadataItem =system. uname # service zabbix -agent start Web界面配置 进入:配置 -> 动作 -> 右上角选择自动注册 -> 创建动作 触发条件:主机元数据 -> 包含 -> Linux 操作一:与模板关联 -> 关联一个模板(这个模板可以是自己创建的,或者使用默认的Linux那个模板) 操作二:发送消息 -> 发送给指定的用户或者群组 说明:页面操作是主机元数据的值, uname可以查看到系统

httpd编译安装及sed工具

老子叫甜甜 提交于 2020-12-30 08:59:37
软件安装及sed工具 一、软件安装 1.1 自建yum仓库,分别为网络源和本地源 ​ 1.1.1 本地源设置: 为虚拟机加载ISO文件 # lsblk #查看光盘设备/dev/sr0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 117G 0 part / sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 2G 0 part /data/da2 ├─sdb2 8:18 0 1G 0 part └─sdb3 8:19 0 1G 0 part sr0 11:0 1 9.6G 0 rom # mount /dev/sr0 /mnt #挂载光盘到/mnt mount: /dev/sr0 is write-protected, mounting read-only # cd /etc/yum.repos.d/ # vim CentOS-Base.repo [CentOS-Base.repo] name=CentOS-Base baseurl=file:///mnt gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg

redis哨兵、集群

冷暖自知 提交于 2020-12-30 05:27:12
cd /opt/s18msredis/ 1016 vim redis-6379 .conf 1017 cat redis-6380 .conf 1018 redis-server redis-6379 .conf 1019 redis-server redis-6380 .conf 1020 redis-server redis-6381 .conf 1021 ps -ef| grep redis 1022 redis-cli -p 6379 1023 redis-cli -p 6380 1024 redis-cli -p 6381 info replication 1025 redis-cli -p 6381 1026 redis-cli -p 6379 1027 redis-cli -p 6381 1028 ps -ef| grep redis 1029 kill -9 18319 1030 ps -ef| grep redis 1031 redis-cli -p 6381 1032 redis-cli -p 6380 1033 redis-cli -p 6381 1034 ps -ef| grep redis 1035 pkill redis- server 1036 rm -rf /data/* 1037 mkdir -p /data/{6379,6380,6381 }

shell study-12day--shell实例

无人久伴 提交于 2020-12-29 14:02:18
1 、 shell 实例 ( 1)打印九九乘法表 [root@test shell]# vi for-1.sh #!/bin/bash for i in `seq 9` #变量i取1-9之间的整数 do for j in `seq $i` #变量j分别取1-1,1-2,1-3...1-9之间的整数 do echo -n "$i*$j= `echo $(($i*$j))` " #不换行输出变量i与变量j相乘的结果 done echo " " done ( 2)ping整个网段地址,并输出结果到指定文件 [root@test shell]# vi ping.sh #!/bin/bash for i in `seq 254` do ping -c 3 192.168.0.$i &>/dev/null if [ $? = 0 ]; then echo "192.168.0.$i up ">>ping.txt else echo "192.168.0.$i down" >> ping.txt fi done ( 3)抓取指定网口实时流量 [root@test shell]# vi liuliang.sh #!/bin/bash ethn=$1 while true #每执行一次while true,就会调用true命令。 #true用于和其他命令进行逻辑运算。返回状态总是成功;返回值为0。

统计只有一个数字的行

我们两清 提交于 2020-12-29 13:00:57
题目要求 用shell实现,把一个文本文档中只有一个数字的行给打印出来。 参考答案 #!/bin/bash while read line do n=`echo $line |sed 's/[^0-9]//g'|wc -L` if [ $n -eq 1 ] then echo $line fi done < 1.txt 来源: oschina 链接: https://my.oschina.net/u/3954059/blog/3104150

Linux_通配符+正则表达式

心不动则不痛 提交于 2020-12-29 07:39:47
系统通配符号: * -- 匹配所有内容信息 【应用场景一: 找寻数据信息时】 find /oldboy -name " *.txt " find /oldboy -name " oldboy* " find /oldboy -name " oldboy*.txt " 【应用场景二: 操作管理数据】 ll /oldboy/oldboy*    rm -rf /oldboy /* cp -a /oldboy/* /tmp/ rm /oldboy/* --> cd /oldboy rm -rf /* {} -- 匹配序列内容信息 {01..100} {a..z} {A..Z} 【应用场景一: 生成序列信息】   echo { 01 .. 10 } --- 生成连续序列   echo { 01 .. 10 .. 2 } --- 生成等差序列     [root@localhost ~ ]# echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z [root@localhost ~]# echo {a..z.. 2 } a c e g i k m o q s u w y   [root@localhost ~]# echo { 01 , 03 , 07 , 08 , 09 } 01 03 07 08 09   应用场景二

Go 编程模式:Go Generation

本秂侑毒 提交于 2020-12-27 08:49:04
在本篇文章中,我们将要学习一下Go语言的代码生成的玩法。Go语言代码生成主要还是用来解决编程泛型的问题,泛型编程主要解决的问题是因为静态类型语言有类型,所以,相关的算法或是对数据处理的程序会因为类型不同而需要复制一份,这样导致数据类型和算法功能耦合的问题。泛型编程可以解决这样的问题,就是说,在写代码的时候,不用关心处理数据的类型,只需要关心相当处理逻辑。泛型编程是静态语言中非常非常重要的特征,如果没有泛型,我们很难做到多态,也很难完成抽象,会导致我们的代码冗余量很大。 本文是全系列中第6 / 9篇: Go编程模式 Go编程模式:切片,接口,时间和性能 Go 编程模式:错误处理 Go 编程模式:Functional Options Go编程模式:委托和反转控制 Go编程模式:Map-Reduce Go 编程模式:Go Generation Go编程模式:修饰器 Go编程模式:Pipeline Go 编程模式:k8s Visitor 模式 « 上一篇文章 下一篇文章 » 目录 现实中的类比 Go语方的类型检查 Type Assert Reflection 它山之石 Go Generator 函数模板 函数生成脚本 生成代码 新版Filter 第三方工具 现实中的类比 举个现实当中的例子,用螺丝刀来做具比方,螺丝刀本来就是一个拧螺丝的动作,但是因为螺丝的类型太多,有平口的,有十字口的

[LeetCode] 195. Tenth Line 第十行

走远了吗. 提交于 2020-12-24 19:04:57
Given a text file file.txt , print just the 10th line of the file. Example: Assume that file.txt has the following content: Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 Your script should output the tenth line, which is: Line 10 Note: 1. If the file contains less than 10 lines, what should you output? 2. There's at least three different solutions. Try to explore all possibilities. 用Bash脚本来打印一个txt文件的第十行。 1. awk是强大的文本分析工具,具有流控制、数学运算、进程控制、内置的变量和函数、循环和判断的功能。其中NR表示行数,$0表示当前记录 awk '{if(NR == 10) print $0}' file.txt   # OR awk 'FNR == 10 {print }' file.txt # OR awk 'NR == 10