《shell脚本学习指南》----字段处理的几种类型

(1)分割字段的两种方式

空白符:space或Tab键

特定的定界符:冒号


(2)字段的选定----cut

#取出第一列和第五列的字段,不需加上cat便可直接读取该字段

#以冒号为定界符


$ cut -d : -f 1,5 /etc/passwd


(3)字段连接的实例----join

两个原文档:


sales:                    quotas:
joe     100               joe       50
jane    200               jane      75
herman  150               herman    80
chris   300               chris	    95


我们的任务是将两个文档合并,以人名为键值


$ vim merge_sales.sh


#输入以下shell

#!/bin/sh -
#merge-sales.sh
#delete remarks and compositor data
sed '/^#/d' quotas | sort > quotas.sorted
sed '/^#/d' sales | sort > sales.sorted
#use the first values as a key to combine
#the result will be inputed to standin
join quotas.sorted sales.sorted
#delete cushion files
rm quotas.sorted sales.sorted

(4)重新编排字段----awk


    awk读取输入记录(通常是一行),然后自动将各个记录切分为字段。awk将每条记录内的字段数目,存储到内建变量NF。
    
    几个例子:

#打印第一个字段,以冒号为分隔符

$ awk 'BEGIN{FS=":"}{print $1}' /etc/passwd


#打印第一行和最后一个字段

$ awk 'BEGIN{FS=":"}{print $1 $NF}' /etc/passwd


#打印非空行,编号0表示整条记录

$ awk 'NF > 0 {print $0}' /etc/passwd


#printf和-F的应用

$ awk -F: '{printf "User is really %s\n",$1,$5}' /etc/passwd


-F可以自动设置FS变量,如果不加此参数,$5将不会被打印,而且在$1打印完#毕之后还会继续打印知道遇到$结束符



你可能感兴趣的:(shell,脚本,vim,文档,任务,merge)