您的位置:首页 > 运维架构 > Shell

Shell 脚本编程总结(一)

2017-09-18 08:22 218 查看
shell脚本编程总结(一)

文本处理工具awk
    awk是基于列的文本处理工具。它的功能强大,在shell编程中用着广泛的应用。下面以示例的方式解释awk的常用操作。
    为了更好的操作awk,为此创建文件abc.txt。字符串之间都以Tab作为分隔符。文件内容如下:
 
            
 john       male   30  021-1111111   a
            
 lucy       female 25  021-2222222   ab
            
jack       male   35  021-3333333   abc
             
lily       female 20  021-4444444   abcd
 
    每一个列称为一个域,以此用$1,$2,$3 ...表示。其中$0代表所有域,也就是整个文件。
 
1、打印指定列
    要想输出第一列和第二列的信息,就要用到$1 $2。具体命令如下:
cat abc.txt | awk '{print $1,$2}'

 
2、变量NF
    NF是内部变量。NF存放着每一行的列的个数,也就是每行域的总数。具体示例如下:
    查看每一行的域的总数:cat abc.txt |awk '{print NF}'

    有了以上认识,接下来就不难理解$NF。$NF表示每一行最后一个域的值。变量$(NF-1)表示一行中倒数第二个域的值。以此类推$(NF-2)代表什么就明白了吧!示例代码如下:
cat abc.txt | awk '{print $(NF-4),$(NF)}'

 
3、截取指定的字符串
    截取字符串函数是substr(指定域,开始字符位置,结束字符位置)。例如获取$4中的"021-",命令如下:
cat abc.txt | awk '{print substr($4,1,4)}'

    如果想要获取"-"后边的字符,就需要用substr($4,5),意思是截取$4域的第五个字符开始的所有字符。命令如下:
cat abc.txt | awk '{print substr($4,5)}'

 
4、获取字符串长度
    利用内部变量length可以获得每行字符串的长度。获取每行的字符长度,示例如下:
cat abc.txt | awk '{print length}'

 
    获取$5的字符串长度,示例如下:
cat abc.txt | awk '{print length($5)}'

  
5、求和
    求$3的和,示例如下:
cat abc.txt | awk  'BEGIN{total=0}{total+=$3}END{print total}'

 
6、条件查询
    输出jack的所有信息。示例如下:
awk '$1=="jack" {print $0}'abc.txt

           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 脚本 编程 awk