awk命令

shell 变量

别等时光非礼了梦想. 提交于 2019-12-01 17:08:47
在/backup下创建10个.txt的文件,找到/backup目录下所有后缀名为.txt的文件 1)批量修改txt为txt.bak 2)把所有的.bak文件打包压缩为123.tar.gz 3)批量还原文件的名字,及把增加的.bak再删除 [root@shell shell]# vim mv.sh #!/bin/bash Dir=/backup #判断目录是否存在,不存在则创建 [ -d $Dir ] || mkdir -p $Dir #创建10个文件 touch $Dir/{1..10}.txt #找到这些文件,进行批量修改名称 find $Dir -type f -name "*.txt" >$Dir/txt.log #批量修改文件名 sed -r 's#(.*)#mv \1 \1.bak#g' $Dir/txt.log |bash #打包压缩为123.tar.gz tar czf $Dir/123.tar.gz $Dir/*.bak #批量进行还原文件名 find $Dir -type f -name "*.bak" >$Dir/bak.log #还原 sed -r 's#(.*).bak#mv \1.bak \1#g' $Dir/bak.log |bash for循环方式修改 [root@shell shell]# vim for_name.sh #!/bin/bash

Shell变量概述

好久不见. 提交于 2019-12-01 17:07:22
目录 1. Shell变量概述 1.定义变量,变量名=变量值。不能出现"-横杠"命令 2.引用变量,$变量名 3.查看变量,set显示所有变量,包括自定义变量和环境变量 4.取消变量,作用范围:仅在当前Shell中有效。 5.注意事项,引用变量时注意事项,单双引号和不加引号的区别。 注意: 2.执行结果如下: 3.这里需要注意 $*和$@的区别 执行结果如下: 自定义变量运算 命令的嵌套使用,使用$($()) 2. Shell变量赋值 echo命令输出颜色。 3. Shell变量替换 4. Shell变量运算 5. Shell变量案例 1. Shell变量概述 1. 什么是变量 变量是Shell传递数据的一种方法,简单理解:用一个固定的字符串去表示不固定的内容,便于后续引用。 2.变量命令规范 变量定义时名称有要求:字母、数字、下划线几个组成,尽量字母开头,变量名最好具备一定的含义。 ip=10.0.0.100 ip1=10.0.0.100 Hostname_Ip=10.0.0.100 hostname_IP=10.0.0.100 等号是赋值,需要注意:等号两边不能有空格,其次定义的变量不要与系统命令出现冲突。 3. Shell变量定义的方式 01)用户自定义变量:人为定义的变量名称。 02)系统环境变量:保存的是和系统操作环境相关的数据。 03)位置参数变量:向脚本中进行参数传递

在线做RAID命令

瘦欲@ 提交于 2019-12-01 09:46:23
# 安装raid卡管理工具 wget http://10.12.30.102:10800/other/MegaCli-8.07.14-1.noarch.rpm -O /tmp/MegaCli-8.07.14-1.noarch.rpm rpm -ivh /tmp/MegaCli-8.07.14-1.noarch.rpm ln -sf /opt/MegaRAID/MegaCli/MegaCli64 /usr/local/bin/megacli #查看所有RAID卡信息 megacli -AdpAllInfo -aALL | grep 'Adapter #' #查看RAID卡编号 megacli -AdpAllInfo -aALL | grep 'Adapter #' #查看RAID卡的个数 megacli -AdpAllInfo -aALL | grep 'Adapter #' | wc -l #查看RAID控制卡信息(为了获取Enclosure Device ID,如果有多个RAID控制器,请确认需要创建RAID的物理磁盘连接在哪个RAID控制器,然后获取ID,不同控制器下的磁盘不能创建在同一个GROUP) megacli -cfgdsply -aALL | grep 'Enclosure Device ID' #查看RAID情况 megacli -LDInfo -LALL -a0

centos 7 安装 redis

本秂侑毒 提交于 2019-11-30 14:44:03
[root@localhost ~]# yum -y install gcc make [root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz -P /usr/local/src //下载 redis (Nosol DataBase) [root@localhost ~]# cd /usr/local/src/ //进入目录 [root@localhost src]# tar -zxvf redis-5.0.5.tar.gz //解压 [root@localhost src]# cd redis-5.0.5/ //进入目录 [root@localhost redis-5.0.5]# make //安装 [...] Hint: It's a good idea to run 'make test' ;) make[1]: Leaving directory `/usr/local/src/redis-5.0.5/src' [root@localhost redis-5.0.5]# cd src/ //进入目录 [root@localhost src]# make install PREFIX=/usr/local/redis-5.0.5 CC Makefile.dep Hint: It

grep、sed、awk三剑客

霸气de小男生 提交于 2019-11-30 13:08:32
grep 对文本内容进行过滤 用法: 1.grep -i  不区分大小写 [root@s120 ~]# echo -e "hello world\nHELLO world"|grep -i hello hello world HELLO world [root@s120 ~]# echo -e "hello world\nHELLO world"|grep hello hello world 2.grep -n  显示行号 [root@s120 ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin 3.grep -o  只打印匹配的内容 [root@s120 ~]# echo "hello world"|grep -o hello hello [root@s120 ~]# echo "hello world"|grep hello hello world 4.grep -c  只打印匹配的行数 [root@s120 ~]# grep -c root /etc/passwd 2 [root@s120 ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash

我的java问题排查工具单

回眸只為那壹抹淺笑 提交于 2019-11-30 12:12:49
原文地址:https://yq.aliyun.com/articles/69520 我的问题排查工具箱 前言 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。 闲话不多说,开搞。 Linux命令类 tail 最常用的tail -f tail -300f shopbase.log #倒数300行并进入实时监听文件写入模式 grep grep forest f.txt #文件查找 grep forest f.txt cpf.txt #多文件查找 grep 'log' /home/admin -r -n #目录下查找所有符合关键字的文件 cat f.txt | grep -i shopbase grep 'shopbase' /home/admin -r -n --include *.{vm,java} #指定文件后缀 grep 'shopbase' /home/admin -r -n --exclude *.{vm,java} #反匹配 seq 10 | grep 5 -A 3 #上匹配 seq 10 | grep 5 -B 3 #下匹配 seq 10 | grep 5 -C 3 #上下匹配,平时用这个就妥了

运维面试笔试题

瘦欲@ 提交于 2019-11-30 12:00:08
一.基础面试 (一).linux面试题 1.写一个脚本查找最后创建时间是三天前,后缀是*.log的文件并删除 find . -ctime +3 -name ‘*.log’|rm -rf 2.统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip cat access.log|awk’{print$1}’|uniq -c|sort -rn|head -10 3.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log。 tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log tcpdump -w test host 192.168.1.1 and tcp port 22 > tcpdump.log 4.查出哪个IP地址连接最多 netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort - netstat -na|grep SYN|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r 5.对服务器各种状态下的连接数分组并查询得到结 netstat -n|awk ‘/^tcp/{

shell脚本举例

会有一股神秘感。 提交于 2019-11-29 20:42:43
一、Shell编程实战收集服务器信息 在企业上产环境中,经常会对服务器资产进行统计存档,单台服务器可以手动去统计服务器的CPU型号、内存大小、硬盘容量、网卡流量等,如果服务器数量超过百台、千台,使用手工方式就变得非常吃力。 基于Shell脚本实现自动化服务器硬件信息的收集,并将收集的内容存放在数据库,能更快、更高效的实现对服务器资产信息的管理。Shell脚本实现服务器信息自动收集,编写思路如下: 创建数据库和表存储服务器信息; 基于Shell四剑客awk、find、sed、grep获取服务器信息; q 将获取的信息写成SQL语句; q 定期对SQL数据进行备份; q 将脚本加入Crontab实现自动备份; 创建数据库表,创建SQL语句如下: CREATE TABLE `audit_system` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip_info` varchar(50) NOT NULL, `serv_info` varchar(50) NOT NULL, `cpu_info` varchar(50) NOT NULL, `disk_info` varchar(50) NOT NULL, `mem_info` varchar(50) NOT NULL, `load_info` varchar(50) NOT NULL, `mark

30个经典shell脚本上

戏子无情 提交于 2019-11-29 12:05:37
注:转自https://weibo.com/linuxprobe?topnav=1&wvr=6&topsug=1&is_hot=1(刘遄老师的Linux就该这样学) 先了解下编写Shell过程中注意事项: 开头加解释器:#!/bin/bash 语法缩进,使用四个空格;多加注释说明。 命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 写脚本一定先测试再到生产上。 1、获取随机字符串或数字 获取随机8位字符串: 方法1: # echo $RANDOM |md5sum |cut -c 1-8 471b94f2 方法2: # openssl rand -base64 4 vg3BEg== 方法3: # cat /proc/sys/kernel/random/uuid |cut -c 1-8 ed9e032c 获取随机8位数字: 方法1: # echo $RANDOM |cksum |cut -c 1-8 23648321 方法2: # openssl rand -base64 4 |cksum |cut -c 1-8 38571131 方法3: # date +%N |cut -c 1-8

awk中的getline函数

匆匆过客 提交于 2019-11-29 04:26:05
getline getline函数得到下一行可能的返回值为: 1 如果能够读取一行。 0 如果到了文件末尾。 -1 如果遇到错误。 从文件中读取 getline函数除了能读取正常的输入流外,还可以从文件或管道中读取。 while((getline<"filepath")>0) print 将输入赋给一个变量 读取下一行并赋值给变量input: getline input 从管道读取输入 执行一个命令并将结果用管道输送到getline。 "who am i"|getline 当一个命令的输出结果被用管道输送给getline且包含多个行时,必须创建一个循环来执行getline。 while("who"|getline) who_out[++i]=$0 获取用户标准输入 1.getline<"-" 2.getline<"/dev/tty" 例子: awk 'BEGIN{printf "Enter your name:";getline<"-";print}' 三个$1 #!/bin/bash filename:awk_whoami.sh awk ' BEGIN{"who am i"|getline name= $1 FS=":" } name ~ $1 {print $5} ' $1 第一个$1:getline读取下一行将其赋给$0,故$1指新输入行的$1。 第二个$1:指第三个