grep、cut、awk、send

grep

*

前一个字符匹配0次或者任意多次

grep “aa*” test.txt    匹配有包含1个a的行

.

匹配除了换行符外任意一个字符

grep a.b test.txt     a开头,b结尾,中间字符任意

^

匹配行首

grep ^a”  test.txt      行首为a开头

grep  -n  ^$”            匹配空行,-n显示行号  

$

匹配行尾

grep $b test.txt       行尾为b

[]

匹配括号中指定的任意一个字符,只匹配一个字符

grep [0-9] test.txt    grep "[a-zA-Z]" test.txt

[^]

相对于[]取反

grep [^0-9] test.txt

\

转义符,取消特殊符号的含义

\{n\}

表示其前面的字符恰好出现n次

grep [0-9]\{2\}        0-9的字符恰好出现2次的

grep [1][3-8][0-9]\{9}  匹配手机号码

\{n,\}

表示其前面的字符出现不小于n次

grep [0-9]\{2,\}        0-9的字符出现不小于2次的

\{n,m\}

表示其前面的字符至少出现n次,最多出现m次

grep [0-9]\{2,3\}       

-n显示行号

-v取反

 

字符截取命令cut

cut [选项] 文件名

-f列号

-d分隔符:

cut出第2列 , 默认分隔符是tab键

wKioL1VIVgHSUGXUAAA7WHM3oAQ088.jpg

    cut -d ":" -f 1,3 /etc/passwd

以:为分隔符,截取第1,3列

wKiom1VIVLiiiBt5AAA-RK1lbPI802.jpg 

cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1

提取系统中所有普通用户的用户名

 

 

printf命令

print ‘输出类型输出格式’输出内容

输出类型

%ns:输出字符串,n代表几个字符

%ni:输出正数,n代表几个数字

$m.nf:输出浮点数,m和n是数字,分别代表整数位和小数位

输出格式:

\n换行

\r回车,Enter键

\t水平输出退格键,Tab键

\v垂直输出退格键,Tab键

\a输出警告音

\b输出空格键,Backspace键

\f清除屏幕

 

printf '%s' $(cat cut.txt)     原始无格式输出

wKiom1VIVPHTzPn1AABS7nWqTp4258.jpg 

printf '%s\t %s\t %s\t %s\t \n' $(cat cut.txt)定义格式输出

 wKiom1VIVP2Q_M1kAABMfGu7C84221.jpg

 

awk命令

awk 条件1{动作1} 条件2{动作2}...文件名 

条件:

x>10判断变量x是否大于10

x>=10

x<=10

动作:

格式化输出

流程控制语句

#df -h | awk {printf $1 \t $6 \n}

wKioL1VIVqnDdoVZAAB9OEAB9Kg770.jpg 

 

#df -h | grep "/dev/sda3" | awk '{printf $5}' | cut -d "%" -f 1

wKiom1VIVUPBWZWyAAAqpHmq5S4505.jpg 

 

动作 BEGIN

所有数据读取之前,执行,再执行后面数据

wKioL1VIVrvzNa-SAAA6Nqbd0CM034.jpg 

 

内置变量FS

定义分隔符

# awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}' /etc/passwd

wKiom1VIVWiiyuGUAABaH122jeg235.jpg 

 

动作END

所有数据处理完之后执行

# awk 'END{print "this end"}{print $1 "\t" $4}' cut.txt 

 

wKiom1VIVXHSugY7AAA_LeidlTM848.jpg 

print = printf \n print会自动换行

 

 

sed命令流编辑器,可对命令结果进行处理

sed [选项]‘动作’文件名

-n只输出sed命令处理过的行

-e允许对输出数据应用多条sed命令编辑

-i用sed修改的结果直接修改读取数据的文件,而不是屏幕输出

动作

a\:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用 \ 代表数据未完结

c\:行替换,用c后面的字符串替换原数据行

i\:插入,在当前行前插入一行或多行

d:删除,删除指定行

p:打印,输出指定行

s:字串替换,用一个字符串替换另一个字符串s/旧字符串/新字符串/g

 

#sed -n 2pstudent.txt

处理第2行输出

wKiom1VIVZiAtqG4AAAtg1QGkeM072.jpg 

#sed '2,3d' students.txt  

删除第2-3行

 

#sed '2a nihao\' students.txt 

在第2行之后插入新行,内容为nihao

 

# sed '2c nonono' students.txt 

替换第2行

#sed '2s/91/99/g' students.txt 

把第2行的字符串91替换为99

 

 

 

 

 

 

 

字符处理命令

排序命令sort

sort [选项] 文件名

-f忽略大小写

-n以数值型进行排序,默认使用字符串排序

-r反向排序

-t指定分隔符,默认分隔符是制表符

-k n[,m]安装指定的字段范围排序

#sort -n -t ":" -k 3,3 /etc/passwd

按照uid从小打到排序

统计命令wc

wc [选项] 文件名

-l只统计行数

-w只统计单词数

-m只统计字符数

 


你可能感兴趣的:(grep,awk,send,cut)