grep(过滤)
匹配文件中不包含 MANPATH 的那一行:
cat manpath.config| grep -v 'MANPATH'
grep -E "word1|word2|word3" file.txt
匹配 file.txt 中包含 word1 或 word2 或 word3 的行。
满足其中任意条件(word1、word2和word3之一)就会匹配。
grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配。
sed(显示)
awk
NF 字段数量变量
NR 每行的记录号,多文件记录递增
FNR 与NR类似,不过多文件记录不递增,每个文件都从1开始
\t 制表符
~ 匹配,与==相比不是精确比较
!~ 不匹配,不精确比较
== 等于,必须全部相等
&& 逻辑与
|| 逻辑或
FS BEGIN时定义分隔符
awk -F":" '{print $1}' /etc/passwd #输出文件以:为分隔符的第一行
awk -F : '/nologin$/||/^halt/{print $1}' file8 #输出file8中以nologin结尾或以halt开头的第一列
awk 'BEGIN {FS = "|"} $1=1 {print $4 "\t" $5}'
#BEGIN END用法
#1.计算某一列和
awk 'BEGIN{sum=0}{sum += $1}END{print sum}' #计算某一列的和
#2. 求均值
awk 'BEGIN{sum=0}{sum+=$1}END{print sum/NR}' file
#3. 求最大值
awk 'BEGIN{max=0}{if($1 > max)max = $1}END{print max}'
-f指定脚本文件
awk -f script.awk file
BEGIN {FS=":"} {print $1}
#找出家目录不在/home的用户数量
#输出/etc/paswd文件的行数,并输出最后一行的最后一列
cut
cat fileName
test2
this is a test content
cut -c1-6 fileName #输出每一行1-6个字符
test2
this i
cut -d' ' -f 1 fileName #输出以空格为分隔符的第一栏
teat2
this