Linux学习笔记之shell编程

27 篇文章 0 订阅

1.正则表达式

正则表达式与通配符的区别

通配符:用于匹配文件且为精准匹配,比如ls aa,就只会匹配aa文件。
正则表达式:用于匹配文件中的字符信息且为模糊匹配,比如grep匹配aa,那包含aa的行都会被列出来。

基础正则表达式
*:前一个字符匹配0次或多次。
.:匹配除了换行符以外的任意一个字符。
^:行首
$:行尾
[]:这里面任意一个,只有一个。
例子:[1-9],[a-z],[a-zA-Z](这个有点特殊,记住)
[^]:非,在括号外是行首,在括号内是非。
\:转义符号
{n}:恰好出现n次。
{n,}至少n次
{n,m}n到m次

2.截取字符串

1.cut [选项] 文件名
-f 列号
-d 按照的分割列的符

例如:cut -d “:” -f 2,4 文件名
功能:以冒号为分割符号,输出第二列和第四列。
cut命令的缺点:对于划分符号不明确的表格无法操作。

2.printf ‘输出类型输出格式’ 输出内容
输出类型:
%ns 输出n个字符的字符串
%ni 输出n个数字的整数
%m.nf 输出m位的,浮点数,其中n位小数,m-n位整数。

范例 printf %s 1 2 3 4 5 6
输出:123456
printf ‘%s %s %s’\n 1 2 3 4 5 6
输出:
1 2 3
4 5 6

注意:printf命令不可以接文件名,也不可以用管道符来传入输入信息。
想要打印文件的话需要写:
printf ‘格式自己定’ $(cat student.txt)
这条命令一般用于awk命令中,不会用在命令行。

3.awk ‘条件1 {动作1} 条件2 {动作2} …’ 文件名

cut不能打印分割不均匀的文件,但是awk可以。
例子:awk ‘{printf $1 “\t” $5 “t” $6}’

在awk中print和printf不同,前者会自动换行,后者不会。在shell编程中,没有print命令。

小技巧:12%去掉百分号可以用cut -d “%” -f 1

FS内置变量:{FS=“:”},用于分割

BEGIN动作:在awk中,每次都会先读取文件的第一行,在进行分割等操作,加了BEGIN就会从一开始就进行操作。
END动作:所有动作做完以后再做。

关系运算符:"$3>=60"

4.sed命令
sed命令是轻量级流编辑器,可以修改命令的结果。
sed 【选项】‘【动作】’ 文件名
【选项】
-n:一般sed命令会把所有的数据都输出到屏幕,如果加入此选项,则只会把sed处理过了的信息输出。
-e:允许对输入数据应用多条sed命令编辑。
-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。
【动作】
a \ :追加
c \ :行替换
i \:插入
d:删除
p:打印
s:字符串替换

范例:
行数据操作
sed -n ‘2p’ student.txt #输出第二行,-n很重要,没有就全部输出了。

sed ‘2,4d’ student.txt #删除2,3,4行的数据,如果想要改变原文件需要加入-i选项。

sed ‘2a canglaoshi’ student.txt #最追加canglaoshi在第二行后

sed ‘4c no person’ student.txt #替换第四行为’no person’

字符串替换:
sed ‘s/旧字符串/新字符串/g’ 文件名

3.字符处理

1.sort 【选项】 文件名
选项:
-f 忽略大小写 (偶尔用)
-n 以数值类型进行排序(重要)
-r 反向排序(重要)
-t 指定分割符
-k n[,m] 排序字段范围
2.wc 【选项】文件名
【选项】
-l:只统计行数
-w:只统计单词数
-m:只统计字符数

4.条件判断

这一节看视频吧,很麻烦。
注意:[ 条件判断式 ]一定要有空格,否则会报错。

5.流程控制

1.if语句

格式1:

if [ 条件判断式 ]
then
动作1
else
动作2
fi

格式2:

if
【 条件判断式 】
then
动作
elif
【 条件判断式 】
then

else
then
动作 fi

本节有3个例子,建议对这视频反复练习。
nmap命令:功能强大,需要自己安装,可以看开通的服务。
nmap -sT ip地址:扫描服务器上开启的tcp端口。
2.case语句
case $变量名 in
“值1”)
动作1
;;
“值2”)
动作2
;;
*)
动作3
;;
esac

3.for循环
格式1:
for 变量 in 值1 值2 值3 …
do
程序
done

格式2:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

这几个例子也非常好

4.while循环

while [ 条件判断式 ]
do
程序
done

5.until循环

until [ 条件判断式 ]
do
程序
done

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值