• Shell script


    1.检查文件是否存在,且不为空

    [ -f “input.txt” ]&&[ -s “input.txt” ]&&echo “input.txt exists and contains characters”

    []即判断语法,不必用if

    注意[]前后必须有空格,各部分再由空格隔开,命令格式如此,不照做,就报错。

    && || 逻辑运算符可用来代替then else。对于与操作符而言,前为真,则执行后面;对于或操作符而言,前为假,则执行后面

    2.文件有200行,打印出第20到第50行

    #!/bin/bash
    i=1
    while read line
    do
    	[ $i -ge 20 ]&&[ $i -le 50 ]&&echo $line
            i=$(($i+1)) 
    done<input.txt
    

    先设置一个行计数器,再读取文件的每一行,判断行号是不是大于等于20,且小于等于50,是的话就打印出该行  

    <是逆向管道符

    line只是变量,read后也可写其它名字,并非必须这么命名

    定义的变量,要想使用,须加上$

    3.把文本里的apple替换为Apple

    sed -i ‘s/apple/Apple/’ input.txt
    

    sed即stream editor,用户不必打开文件就可直接修改文件,参数-i是让修改直接作用于文件上

    ‘’是命令区,s表示替换,前为待替换字符串,后为替换字符串,记得最后也要有/

    4.有文本以制表符隔开,如下:

    David Math 95
    Lily English 90
    Lily Biology 83
    Bob Biology 85
    David English 88
    Bob Math 87
    1)问有多少学生?

    cat input.txt|awk ‘{print $1}’|sort -u|wc -l
    

    读入文件,结果给awk,只打印出第一列名字的字符,再进行去重(参数 -u)排序,再交给wc统计有多少行(参数 -l),即学生数量

    2)谁英语成绩最好,并由低到高排序

    cat input.txt|grep ‘English’|sort -r -k3
    

    读入文件,结果给grep,找出包含English的行,再给sort,逆序排列(参数-r),键是第三列(参数-k3)

    3)计算数学平均成绩

    cat input.txt|grep ‘Math’|awk ‘{sum+=$NF}END{print sum/NR}’
    

    读入文件,结果给grep,找出包含Math的行,再给awk,取每行最后一列的值,累加求和,全部处理后(END),用成绩之和除以记录数(NR,即number of records)

  • 相关阅读:
    【JAVA】浅谈java枚举类
    【JAVA】浅谈java枚举类
    WinForm时间选择控件(DateTimePicker)如何选择(显示)时分秒
    WinForm时间选择控件(DateTimePicker)如何选择(显示)时分秒
    SQL Server中的between(在某个范围)
    SQL Server中的between(在某个范围)
    如何安装Microsoft网络客户端 无法访问局域网的共享文件夹
    如何安装Microsoft网络客户端 无法访问局域网的共享文件夹
    SQL Server 中WITH (NOLOCK)浅析
    SQL Server 中WITH (NOLOCK)浅析
  • 原文地址:https://www.cnblogs.com/yifeixu/p/10657972.html
Copyright © 2020-2023  润新知