Shell脚本常用命令汇总

正则表达式

元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始(在集合字符里[^a]表示非(不匹配)的意思
$匹配字符串的结束

限定字符

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

转义字符

遇到要使用元字符的情况,这个时候就需要进行字符转义,如元字符 .  *  \ 需要转换为\.   \*   \\

常用正则

  • 只能输入数字:^[0-9]*$
  • 只能输入N位数字:^[0-9]{n}$
  • 只能输入至少N位数字:^[0-9]{n,}$
  • 只能输入m到n位数字:^[0-9]{m,n}$
  • 只能输入0和非0开头的数字:^(0|[1-9][0-9]*)$
  • 只能输入有2位小数的正实数:^(0|[1-9][0-9]*)\.[0-9]{2}$ (^[0-9]+(.[0-9]{2})?$)
  • 只能输入有1-3位小数的正实数:^(0|[1-9][0-9]*)\.[0-9]{1,3}$ (^[0-9]+(.[0-9]{1,3})?$)
  • 只能输入非0的正整数:^\+?[1-9][0-9]*$
  • 只能输入非0的负整数:^\-[1-9][0-9]*$
  • 只能输入长度为3的字符:^\w{3}$ (^.{3}$)
  • 只能输入由26个英文字母组成的字符串:^[A-Za-z]+$
  • 只能输入由26个大写英文字母组成的字符串:^[A-Z]+$
  • 只能输入数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
  • 只能输入由数字、26个英文字母或者下划线组成的字符串:^\w+$
  • 验证密码,以字母开头,长度在6~18之间,只能包含字符、数字和下划线:^[A-Za-z]\w{5,17}$

sed(Stream Editor)

  • sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会直接修改原文件
  • sed常见的语法格式有两种,一种叫命令行模式,另一种叫脚本模式
  • sed [options] ‘处理动作’ 文件名

常用选项

选项说明备注
-e进行多项(多次)编辑可以编辑多个匹配参数
-n使用安静模式,取消默认输出在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed特殊处理的行
-r使用扩展正则表达式
-i原地编辑会修改源文件,不在屏幕上输出
-f指定一个 sed 脚本文件到命令行执行

常用处理动作

动作说明备注
a在指定行之后插入内容
i在指定行之前插入内容
c替换指定行所有内容
d删除指定行常用
p打印行
s用一个字符串替换另一个
h把模式空间里的内容复制到暂存缓存区
H把模式空间里的内容追加到暂存缓存区
g取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
G取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
q退出
!对所选行以外的所有行应用命令

常用范例

查p

  • 输出文件所有内容:sed -n 'p' xxx.txt
  • 只显示文件第3行内容:sed -n '3p' xxx.txt
  • 只显示文件第2-4行内容:sed -n '2,4p' xxx.txt
  • 输出包含the的行:sed -n '/the/p' xxx.txt
  • 输出从第四行起第一个包含the的行: sed -n '4,{/the/p}' xxx.txt (sed -n '4,/the/p' xxx.txt)
  • 输出以AI开头的行:sed -n '/^AI/p' xxx.txt
  • 输出以数字结尾的行: sed -n '/[0-9]$/p' xxx.txt

删d

  • 删除第5行内容:sed -n '5d' xxx.txt
  • 删除5-10行内容:sed -n '5,10d' xxx.txt
  • 删除包含the字符的行:sed -n '/the/d' xxx.txt
  • 删除以大写字母结束的行:sed -n '/[A-Z]$/d' xxx.txt

改s

  • 替换指定字符:sed -n 's/A/B/g' xxx.txt
  • 将行中第2个小写的o替换为大写的O:sed -n 's/o/O/2' xxx.txt
  • 在每行行首加上#:sed -n 's/^/#/g' xxx.txt
  • 在包含girl的行首加上#:sed -n '/girl/s/^/#/g' xxx.txt
  • 在13,14行将o换成B:sed -n '13,14s/o/B/g' xxx.txt

增aic

细节

awk

awk是linux的一个强大的命令,具备强大的文本格式化能力,比如对一堆看起来没有什么规律的日志文件,文本文件等,通过awk命令之后,格式化输出为专业的可以做为应用级数据分析的样式

语法格式

awk  [option]  'pattern[action]'  file ...

处理模式

  • awk默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符;
  • awk按行处理文件,一行处理完毕之后,再处理下一行;
  • awk可以根据用户指定的分隔符去工作,没有指定,则默认为空格;

内置变量

内置变量说明
$n指定分隔符后,当前的第n个列所在的字段
$0完整的一行记录
FS字段分隔符,默认是空格
NF(Number of fields)字段分隔后,当前一共多少个字段
NR(Number of records)当前记录数,行数

常用参数

参数说明
-F指定分隔字段符
-v定义或修改一个awk内部变量
-f从脚本文件中读取awk命令

常用范例

  • 输出第2列:awk '{print $2}' xxx.txt
  • 输出第2,3列:awk '{print $2,$3}' xxx.txt
  • 输出第3行内容:awk 'NR==3{print $0}' xxx.txt
  • 输出第5,6行内容:awk 'NR==5,NR==6{print $0}' xxx.txt
  • 输出第3-5行,并显示行号:awk 'NR==3,NR==5{print NR,&0}' xxx.txt
  • 输出第2列并添加表头信息:awk '{print "numberr: "$2}' xxx.txt
  • #号分隔符:awk -F "#" '{print $1,$2}' xxx.txt
  • 输出倒数第1列:awk '{print $NF}' xxx.txt
  • 格式化输出:awk '{printf "第一列:%s 第二列:%s 第三列:%s\n" ,$1,$2,$3}' xxx.txt
  • BEGIN&AND: awk 'BEGIN{print "小明在学linux"} {print $0}END{print "处理结束"}' xxx.txt
  • 输出含有zcy的行:awk '/^zcy/{print $0}' xxx.txt
  • 找出pwd文件中nologin的用户: awk '/\/sbin\/nologin$/{print NR,$0}' pwd.txt
  • 格式化输出 /etc/passwd 的部分字段: awk -F ":" 'BEGIN{print"用户名\t\t\t字段1\t\t 字段2\t\t 权限"} {printf "user:%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}' pwd.txt
  • 统计nginx的access.log中访问IP的数量:awk '{print $1}' access.log | sort -n | uniq | wc -l
  • 统计nginx的access.log中访问前10的IP: awk '{print NR,$1}' access.log | sort -n | uniq -c | sort -nr | head -10

grep

find

sort

uniq

head

xargs

常用命令汇总

  • 查找字符并替换:sed -i "s/old/new/g" `grep -rl old ./`
  • 去除行尾空格:find . -name '*.py' | xargs egrep '[a-z].* $' |cut -d : -f 1|uniq|xargs -I{} -t sed -i -e 's/ *$//g' {} 

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码论斤卖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值