zoukankan      html  css  js  c++  java
  • shell

    按照时间生成文件‘2019.09.08.log' 将每天磁盘使用装填写入到对应日期的文件

    df -h > $(date +%F)_log
    

    统计Nginx日志中每个IP的访问量有多少,日志如下:

    awk '{ips[$i]+=$11} END {for (i in ips) print i,ips[i]/1024/1024}' log.txt
    

    计算Linux系统所有进程占用内存大小的和

    # ps aux 第六列
    pa aux|awk '{print $6}'|grep -v "RSS"
    
    #!/usr/bin/bash
    num=$(ps aux|awk '{print $6}'|grep -v "RSS")
    sum=0
    for i in $num
    do 
    	sum=$(($sum+$i))
    done
    echo "总值为$(( $sum/1024 )) M"
    

    将文件.txt 改名为 txt.bak, 打包bak文件为123.tar.gz , 然后批量还原文件名字,删除bak

    
    #!/usr/bin/bash
    
    files=$(find /backup -type f -name "*.txt")
    for file in $files
    do 
    	mv $file ${file}.bak
    done
    echo "改名成功"
    # 打包
    tar czf /backup/123.tar.gz $(find -type f -name "*.bak")
    
    echo "压缩成功"
    
    bakfiles=$(find -type f -name "*.bak")
    for bak in $bakfiles
    do 
    	mv $bak ${bak%.*}
    done
    echo "还原成功"
    

    把一个文本文档中前五行中白喊字母的行删除掉,同时把6到10行中的全部字母删除掉

    sed -i "s#[a-Z]##g" aa.txt
    

    linux 系统中是否有自定义用户,一共几个?

    1. 查看/etc/passwd
    2. 提取UID 和 /bin/bash
    3. 判断UID 大于1000, 并且shell 为/bin/bash
    #!/usr/bin/bash 
    i=0
    while read line 
    do 
    	user_uid=$(echo $line|awk -F ":" '{print $3}')
    	user_shell=$(echo $line|awk -F ":" '{print $NF}')
    	if [ $user_uid -ge 1000 -a $user_shell == "/bin/bash" ];then
    		let i++
    	fi 
    	echo $user_uid, $user_shell
    done</etc/passwd
    echo "总共 $i个用户"
    

    按单词出行频率降序排序

    ss=the solid project procides a number of resources toassist users design,implement and supor squid installations. Please browsethe documentations and support sections for more infomation 
    方法一
    # 按单词降序排序
    $ss | sed 's#[.,]# #g'|xargs -n1|sort|uniq -c|sort -nr
    # 按字母降序排序
    $ss|sed 's#[.,]# #g'|grep -o '[a-Z]'|sort|uniq -c|sort -nr 
    方法二 awk
    $ss|sed 's#[.,]# #g'|xargs -n1|awk '{code[$1]++} END {for (i in code) print code[i],j}'|sort -nr
    $ss|grep -o '[a-Z]'|awk '{code[$1]++} END {for (i in code) print code[i],i}'|sort -nr
    

    判断10.0.0.0/24 网络里,当前在线用户的IP 有哪些

    #!/usr/bin/bash
    for i in {1..254}
    do 
    	# 使用并发的方式
    	{
    	ip=10.0.0.$i
    	ping -W1 -c1 $ip &>/dev/null
    	if [ $? -eq 0 ];then
    		echo "$ip is ok" >>ip.txt
    	fi
    	} &
    done
    	wait && cat ip.txt
    

    正则表达式

    # 特定字符
    [[:space:]]  空格
    [[:digit:]]  [0-9]
    [[:lower:]]  [a-z]
    [[:upper:]]  [A-Z]
    [[:alpha:]]  [a-Z]
    # 使用grep 取IP地址
    ifconfig|grep 'inet'|egrep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
    # 使用grep 取出 http1.0 http1.1
    head -2 aa.log|grep -o 'HTTP/(1|2).(1|0)'|sort|uniq -c
    # grep -v 排除
    grep -vn '^$'  过滤空行
    # 使用grep 排除配置文件中的空行和#开头的行
    grep "^$" /etc/nginx/nginx.conf
    egrep -v "(^$|^#|.*#)" /etc/nginx/nginx.conf
    # 使用grep筛选出所有开启过的内容(所有都以字母开头)
    egrep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf
    

    sed 文本处理

    sed是一个流搬机器,非交互式的编辑器,一次处理一行内容。把当前处理的行存储在临时缓冲区中,用sed命令处理缓冲区中的内容,处理完后,送往拼命。
    # sed支持增,删,改
    # sed 命令格式  sed [option] 'command' files
    # 选项参数
    -e  允许多项编辑
    -n 取消默认的输出
    -i 直接修改对应文件
    -r 支持扩展元字符
    # sed 命令参数
    a 在当前行后添加一行或多行
    c 在当前行进行替换修改
    d 在当前行进行删除
    i 在当前行之前插入文本
    p 打印匹配的行或指定行
    n 读入下一输入行,从下一条命令进行处理 ! 对所选行以外的所有行应用命令
    
    1. sed 的打印命令 p
    sed -n '2p' passwd  # 打印第二行
    sed -n '$p' passwd  # 打印最后一行
    2. 追加命令 a
    # 在37行添加一条记录, 	 tab需要转义
    sed -ri '37a \t listen 8080;' nginx.conf
    # vim nginx.conf +37  光标直接跳到37行
    3. sed修改的命令
    # 指定某行内容进行替换
    sed -i '7c selinxu=disabled' /etc/selinux/config   # 第七行全部替换 
    # 正则匹配内容进行替换
    sed -i '/^selinux=/c selinux=disable' /etc/selinux/config
    # 非交互式修改指定的配置文件
    sed -ri '/userdns/c Userdnd no' /etc/ssh/sshd_config
    4. sed 的删除命令 d
    sed '3d' passwd
    sed '3{d}' passwd
    sed '3,$d' passwd
    sed '$d' passwd
    sed /mail/d passwd    # 正则匹配删除
    4. sed 获取下一行命令 n
    sed '/root/{n;d}' passwd  # 匹配root行,找到下一行进行删除
    5. 方向选择命令
    sed -r '3!d' /etc/hosts   #除了第三行都删除
    

    sed 匹配替换

    s  替换命令标志  g行内全局替换   i忽略替换大小写
    # 替换每行中出现的一个root
    sed 's/root/alice/' passwd
    # 替换以root 开头的行
    sed 's/^root/alice/' passwd
    # 查找匹配的行,添加内容
    sed -r 's/[0-9][0-9]$/& .5/' passwd
    # 匹配包含root行进行替换
    sed -r 's/root/alice/g' passwd
    # 匹配包含root的行进行替换,忽略大小写
    sed -r 's/root/alice/gi' passwd
    # 后向引用, Roo替换成Roo-alice
    sed -r 's#(Roo)#1-alice#g' passwd
    # sed 提取ip
    ifconfig eth0|sed -rn '2s#(^.*inet) (.*) (net.*$)#2 #gp'
    # 替换建议使用# , 不需要转义
    sed 's#/ect/test/123#/dev/null#g' 1.txt
    # 删除所有字母
    sed 's#[a-z]##g' a.txt
    
  • 相关阅读:
    delphi ios grid BindSourceDB bug
    RAD 10 C++Builder的bug
    Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格
    delphi const的用法
    mysql的sql优化
    mysql如何使用索引index提升查询效率?
    移动端mobiscroll无法滑动、无法划动选值的问题
    html css的内联样式 内部样式表 外部样式表的优先级
    jfinal如何获取参数为数组的值
    jquery如何让checkbox如何取消勾选
  • 原文地址:https://www.cnblogs.com/Afrafre/p/11405734.html
Copyright © 2011-2022 走看看