• bash常见用法


    写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数
    wc -l
    经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行
    tail -5 nowcoder.txt
    写一个 bash脚本以输出数字 05007 的倍数(0 7 14 21...)的命令
    for i in {0..500..7}
        do
            echo $i
        done
    写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。
    awk '{if (NR == 5) print $0}' nowcoder.txt
    写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始
    awk '{if ($0 == null) print NR}' nowcoder.txt
    
    awk '/^$/  {print NR}' nowcoder.txt
    写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行
    awk '{if ($1.length >= 1) print $1}' nowcoder.txt
    
    sed '/^$/d' nowcoder.txt
    写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词。
    awk '{for(i=1;i<=NF;i++) if (length($i) <8) print $i}' nowcoder.txt
    其中NF表示的字段数
    假设 nowcoder.txt 内容如下:
    root         2  0.0  0.0      0     0 ?        S    9月25   0:00 [kthreadd]
    root         4  0.0  0.0      0     0 ?        I<   9月25   0:00 [kworker/0:0H]
    web       1638  1.8  1.8 6311352 612400 ?      Sl   10月16  21:52 test
    web       1639  2.0  1.8 6311352 612401 ?      Sl   10月16  21:52 test
    tangmiao-pc       5336   0.0  1.4  9100240 238544   ??  S     3:09下午   0:31.70 /Applications
    
    以上内容是通过ps aux | grep -v 'RSS TTY' 命令输出到nowcoder.txt文件下面的
    请你写一个脚本计算一下所有进程占用内存大小的和: 
    
    awk 'BEGIN{sum=0} {sum=sum+$6} END{print sum}' nowcoder.txt
    
    其中$0 指的是一行数据,$1指的是一行数据中的第一个,依次往后, 其实该提计算的是虚拟内存所占的页的数量之和,并不是虚拟虚拟内存的大小; 第一列是进程名,2是pid, 3是cpu百分比,4是内存的百分比,5是虚拟内存,6是页数量
    写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数。
    
    为了简单起见,你可以假设:
    nowcoder.txt只包括小写字母和空格。
    每个单词只由小写字母组成。
    单词间由一个或多个空格字符分隔。
    
    示例:
    假设 nowcoder.txt 内容如下:
    welcome nowcoder
    welcome to nowcoder
    nowcoder
    你的脚本应当输出(以词频升序排列):
    to 1 
    welcome 2 
    nowcoder 3
    
     cat nowcoder.txt| tr -s ' ' '
    ' | sort | uniq -c | sort| awk '{print $2,$1}'
    给定一个 nowcoder.txt文件,其中有3列信息,如下实例,编写一个sheel脚本来检查文件第二列是否有重复,且有几个重复,并提取出重复的行的第二列信息:
    实例:
    20201001 python 99
    20201002 go 80
    20201002 c++ 88
    20201003 php 77
    20201001 go 88
    20201005 shell 89
    20201006 java 70
    20201008 c 100
    20201007 java 88
    20201006 go 97
    
    结果:
    2 java
    3 go
    
    awk '{print $2}' | sort | uniq -c | sort | grep -v '1'
    写一个 bash脚本来转置文本文件nowcoder.txt中的文件内容。
    
    为了简单起见,你可以假设:
    你可以假设每行列数相同,并且每个字段由空格分隔
    
    示例:
    假设 nowcoder.txt 内容如下:
    job salary
    c++ 13
    java 14
    php 12
    
    你的脚本应当输出(以词频升序排列):
    job c++ java php
    salary 13 14 12
    
    awk '{
        for (i=1;i<=NF;i++){
            if (NR==1){    
                res[i]=$i  
            }
            else{
                res[i]=res[i]" "$i   // 做追加处理
            }
        }
    }END{
        for(j=1;j<=NF;j++){
            print res[j]  // 每个字段是原始数据的一列
        }
    }' nowcoder.txt
    
    awk是对每一行数据做处理, END是结束上次for循环的每一行数据的处理;然后将处理的数据再输出;
    写一个 bash脚本以统计一个文本文件 nowcoder.txt中每一行出现的1,2,3,4,5数字个数并且要计算一下整个文档中一共出现了几个1,2,3,4,5数字数字总数。
    
    
    
    示例:
    假设 nowcoder.txt 内容如下:
    a12b8
    10ccc
    2521abc
    9asf
    你的脚本应当输出:
    line1 number: 2
    line2 number: 1
    line3 number: 4
    line4 number: 0
    sum is 7
    
    awk '
    {
        count=0
        len=length($0)
        for(i=1;i<=len;i++){
            s = substr($0,i,1)
            if(0<s && s<6){
                count++
                total++
            }
        }
         print "line"NR "number:"count
    }END {
         print "sum is"total
    }' nowcoder.txt
    
    substr(a,b,c) a是字符串, b是开始位置,c是多少个字符
    写一个 bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出
    示例:
    假设输入如下:
    that is your bag
    is this your bag?
    to the degree or extent indicated.
    there was a court case resulting from this incident
    welcome to nowcoder
    
    
    你的脚本获取以上输入应当输出:
    to the degree or extent indicated.
    welcome to nowcoder
    
    说明:
    你可以不用在意输出的格式,包括空格和换行
    
    grep -v "this" 
    写一个bash脚本以实现一个需求,求输入的一个的数组的平均值
    
    第1行为输入的数组长度N
    第2~N行为数组的元素,如以下为:
    数组长度为4,数组元素为1 2 9 8
    示例:
    4
    1
    2
    9
    8
    
    那么平均值为:5.000(保留小数点后面3位)
    你的脚本获取以上输入应当输出:
    5.000
    
    awk '{
        if(NR==1){
            num=$1
            sum=0
        }else{
            sum=sum+$1
        }
    }END{
            printf("%.3f",sum/num)
    }'
    题目描述
    写一个 bash脚本以实现一个需求,去掉输入中的含有B和b的单词
    示例:
    假设输入如下:
    big
    nowcoder
    Betty
    basic
    test
    
    
    你的脚本获取以上输入应当输出:
    nowcoder test
    
    说明:
    你可以不用在意输出的格式,空格和换行都行
    
    grep -v 'b' | grep -v 'B'
  • 相关阅读:
    如何增强Linux和Unix服务器系统安全性
    FTP连接不上的解决方法
    PHP获取当前服务器详细信息
    要想提高电脑开机速度首先需要设置这几个功能
    Centos7下安装iptables防火墙
    centos下LVM配置与管理
    基于LNMP环境的ssh2扩展
    60个开发者不容错过的免费资源库
    MySql命令的基本操作
    存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果
  • 原文地址:https://www.cnblogs.com/leavescy/p/14240146.html
Copyright © 2020-2023  润新知