正则表达式与Linux文本三剑客Day3
续正则表达式与Linux文本三剑客Day2
awk命令模式
BEGIN与END与其它条件
BEGIN模式是处理文本之前需要执行的操作
END模式是处理文本之后需要执行的操作
其它条件可以自己定义,如:NR==2显示第二行,NR<4显示小于4的行
BEGIN1awk 'BEGIN{print "我会先被打印!"}{print $0}' awk1.txt
执行演示
123456[root@localhost ~]# awk 'BEGIN{print "我会先被打印!"}{print $0}' awk1.txt我会先被打印!a1 a2 a3 a4b1 b2 b3 b4c1 c2 c3 c4d1 d2 d3 d4
END1awk 'BEGIN{print "我是BEGIN先执行的内容!"}{print $0}END{pri ...
正则表达式与Linux文本三剑客Day2
续正则表达式与Linux文本三剑客Day1
sed命令sed的工作流语法1sed [option] [sed内置命令字符] [file]
选项1234567-n 取消默认sed的输出,常与sed内置命令p一起使用-i 直接修改结果写入文件,不用-i,sed修改的是内存数据-e 多次编辑,不需要管道符了-r 支持拓展正则,sed默认支持基本正则
sed内置命令字符sed的内置命令字符用于对文件进行不同的操作功能,如对文件增删改查
sed的内置命令字符
解释
a
append,对文本追加,在指定行后面添加一行/多行文本
d
Delete,删除匹配行
i
insert,插入文本,在指定行前添加一行/多行文本
p
print,打印匹配行的内容,通常与-n参数一起使用
s/正则/替换内容/g或者s#正则#替换内容#g或者s@正则@替换内容@g
匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配
匹配范围
范围
解释
空地址
全文处理,如:使用a时不指定行,则会在每一行后添加内容
单地址 ...
便捷化hexo发布脚本
文件名autodeploy.sh12345678910111213141516171819202122232425262728293031323334353637383940414243444546#!/bin/bash#By lptexas/Asucanyh#功能:#切换至Hexo博客根目录下,执行部署命令#判断目录是否存在 blog=myblog #hexo根目录所在文件夹dir=/var/www/path=$dir$blogcomm=/root/.nvm/versions/node/v16.15.1/bin/hexo #hexo命令所在位置if [ -d "$path" ]then if [ pwd != "$path" ] then cd / fielse echo -e "\n" echo "Error:$blog文件夹不存在,请检查$dir目录下是否存在该文件夹!" echo -e "\n" exit 1ficd $pathecho -e & ...
shell脚本学习Day8
从本节开始,学习的资料参阅RUNOOB.COM,略有改动
续Shell脚本学习 Day7shell流程控制之选择语句if语句
见Day6
case … esac多选择语句case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。
可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
有没有发现一个有意思的地方,case反过来写e s a c就是它的结束标志,hahahaha,记住了嘛ヾ(◍°∇°◍)ノ゙
语法
12345678case <值> in<模式1>) #值与模式匹配时,执行;;前的命令语句 <命令> ;; #终止符<模式2>) <命令> ;;esac
实例
123456789101112131415echo '输入 1 到 4 之间的数字 ...
正则表达式与Linux文本三剑客Day1
Linux文本三剑客
文本处理工具均支持正则表达式引擎
grep:文本过滤工具,通过模式pattern工具进行匹配
sed:文本编辑工具,stream editor 流编辑器
awk:Linux文本报告生成器(格式化文本) 本质是gawk,awk是软连接(快捷方式)
正则表达式基本正则表达式BRE集合
字符
作用
举例/说明
^
尖角号,用于模式最左边,匹配以某字符串开头的行
^apple,匹配以apple单词开头的行
$
美元符,用于模式最右边,匹配以某字符串结尾的行
abc$,匹配以abc结尾的行
^$
组合符,表示空行
匹配以空字符开头、空字符结尾的行,也就是空行
.
小数点,匹配任意一个有且只有一个字符,不能匹配空格
一行有多个字符的情况呢?是算一个字符还是多个字符然后匹配其中一个?
\
反斜杠,转义字符,用于还原字符原本的含义
“\.”,输出的结果是一个普通的小数点
*
星号,匹配前一个字符连续出现0次或1次以上,重复0次代表空,即匹配所有内容
a*,表示匹配多个连续的a字符
.*
组合符,匹配所有内容除了空行
.*,输出 ...
shell脚本学习Day7
续Shell脚本学习 Day6shell函数基本概念
区分return与exit
return只能在函数体中 使用
函数实践函数定义和执行在同一个文件中
编写脚本func1.sh
12345678910#!/bin/bash#函数定义function write_music(){ cd /tmp/ echo "创建一个文件,并写入信息" echo "我是被写入的信息" > ./music.txt return 0}#函数执行write_music
执行演示
1234[root@localhost ~]# source func1.sh创建一个文件,并写入信息[root@localhost tmp]# cat music.txt我是被写入的信息
定义函数加载到环境变量中
编写脚本func2.sh
1234#!/bin/bashfunc2(){ echo "我是函数体,我被执行了!"}
检查环境变量的方法
1set
利用source或.命令执行函数,可以将函数 ...
shell脚本学习Day6
续Shell脚本学习 Day5安装lnmp/lamp脚本开发要求
编写脚本,根据用户输入选择判断模拟安装lnmp、lamp
编写脚本lnmp.sh、lamp.sh
该演示脚本建立在/root/sh目录下
1234cd /root/shecho "echo LAMP is installed!!" > ./lamp.shecho "echo LNMP is installed!!" > ./lnmp.shchmod +x lamp.sh lnmp.sh #添加可执行权限
执行演示
123456[root@localhost sh]# echo "echo LAMP is installedsu commen" > ./lamp.sh[root@localhost sh]# echo "echo LNMP is installedsu commen" > ./lnmp.sh[root@localhost sh]# lslamp.sh lnmp.sh ...
Shell脚本学习 Day5
系统自带脚本学习1ls /etc/init.d/
字符串值判断逻辑
string1 = string2
与 [ 命令一起使用的等价运算符,如果两个操作数相等,则返回 true。
string1 == string2
相等运算符与 [[ 命令一起使用,如果两个操作数都相等,则返回 true。
string1 != string2
不等式运算符,如果两个操作数不相等,返回 true。
string1 =~ regex
Regex 运算符,如果 string1 符合扩展的 regex,则返回 true。
string1 > string2
大于运算符,如果 string1 大于 string2,则根据词法(字母)顺序返回 true
string1 < string2
小于运算符,如果 string1 小于 string2,则根据词法(字母)顺序返回 true
-z string
如果 string 的长度是 0,返回 true。
-n string
如果 string 的长度不是 0,返回 true。
注意:
使用变量时需要用双引号
...
Shell脚本学习 Day4
续Shell脚本学习 Day3脚本开发
开发思路(使用nginx为例)
先思考脚本功能、作用
编写伪代码
定义变量,用于存储变化的值,便于后期维护
安装···
启动···
修改配置文件···
重启文件···
函数使用演示编写demo1.sh脚本
1234567#!/bin/bashprint_sth(){ #定义函数print_sthecho "你好呀!"}print_sth #调用定义的函数
运行演示
123[root@localhost ~]# vi demo1.sh[root@localhost ~]# bash demo1.sh你好呀!
实例一
接收用户输入的数字和符号实现加减乘除运算
编写demo2.sh脚本
1234567891011121314151617181920212223242526272829303132333435363738#!/bin/bashprint_usage(){ printf "please enter on interger\n" #给脚本的执行结果指定一个 ...