Shell-05 sed
Shell-05
sed命令
Linux文本处理三剑客之sed语句(行编辑—流编辑器 stream editor)
作为行编辑器对文本进行编辑,以行为单位
注意:sed编辑文件,却不改变原文件;
Sed的工作原理:
在sed里面会提供一个地址空间,在linux的内存中会出现一个模式空间PATTERN SPACE,读取一行
制定一个文本文件,依次读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换、删除、打印、修改、保存)
Sed的用法:
sed [option] …{script-only-if-no-other-script} [input-file]
sed [参数] … “sed自己独立的用法格式的语句” [文本文件]
常见选项:
-r 指定使用扩展的正则表达式
匹配IP地址
1.所有的\都不要
2.| 或者
-n 拒绝默认输出
sed -n ‘1,2p’ 99cfb.sh
-e script for while if
for i in {1..9};do echo “$i” sleep 1;done
-f 指定脚本文件
-l 指定文本换行的长度
-i 直接修改文件内容(不要使用)
Sed命令的地址定界方式
- 直接匹配数值
Sed -n ‘5,7p’ 99cfb.sh
- digit(数字)指定步长 d~步长
sed -n ‘1~3s/j/@/p’ 99cfb.sh
- $ 指定行尾
Sed -n ’10,$p’ 文件
Sed -n ‘\fd\,$p’ 文件-----匹配从fd到行尾
- 0,addr ---addr 可以为数字/$/正则表达式
- Sed -n ‘0,/k\{5,\}/p’ abc
- Sed -n ‘/\(as\)\+/,/\(ds,\)\+/p’ abc
- addr,+N
匹配addr行到,addr后N行
Sed -n ‘/fd/,+5p’ abc
- addr,-N
sed -n ‘1,~3p’ abc
常见命令:
p print 打印 默认在屏幕上显示出来,建议与-n一起使用
c 替换行sed “/aaa/c \A” 文件名
d 删除 sed “/aaa/d” 文件名 删除匹配到的行
sed “1,3d” 文件名
n N 读取/添加 模式匹配到的行的下一行内容在对其进行操作
w 保存文件内容到一个新的文件
*s* 文本内容替换 默认替换模式空间匹配到的第一项内容
g global 全部/全局
语法格式:s/pattern/字符串/---中间的斜杠何以替换为任意一个特殊字符
\1 \2 \3… 和正则表达式的分组是相同的,实现反向应用
指定某一个匹配项进行修改替换
-第四行的第三个for替换成if
第四行的第三个for替换成if并保存到99xfb.sed.sh
i 在匹配行的上一行添加内容
sed “/for/i abc ” filename
a 在匹配行的下一行添加内容
sed “/for/a abc ” filename
Grep “testbash” /etc/passwd | Sed “s#^test.*#&er#g”
例如s###、s@@@、s%%%
sed “s/k/K/gw /root/aabbcc” abc
sed的高级应用
D hold space—占有空间
随机数
RANDOM 范围0-32767
A=$[$RANDOM%100+1]
练习:
- cat /boot/grub/grub.conf sed ‘s/^[[:space:]]\+//g’ /boot/grub/grub.conf
- cat /etc/fstab sed ‘s/^#[[:space:]]\+//’ /etc/fstab
- echo “/var/log/message | ”sed ‘s/[^/]\+$//’
- echo "/var/log/message" | sed 's#^/.*/##'
-
取出文件路径的路径部分----dirname
取出文件路径的文件部分----basename
死循环
while true;do
循环体
done
break—打断跳出循环
continue----跳出本次循环
sleep----延长多长时间后,继续执行循环
until
与while用法相同
区别:只有判断条件为false的时候,才会进入循环语句
练习2:
#!/bin/bash cat << EOF 菜 单 ============================ "CPU)显示cpu信息" "Mem)显示内存信息" "Disk)显示磁盘信息" "Quit)退出" ============================ EOF while true;do read -p "请输入需要查看的信息:" info echo "" if [ -z $info ];then echo "请输入一个正确的参数!!" echo "例如:CPU Mem Disk Quit" # exit 1 fi if [ $info = "cpu" ];then cat /proc/cpuinfo elif [ $info = "mem" ];then free -m elif [ $info = "disk" ];then fdisk -l elif [ $info = "quit" ];then echo "已退出" exit 0 else echo "输入信息有误" echo "请输入一个正确的参数!!" echo "例如:CPU Mem Disk Quit" exit 2 fi done
进度条
Vim .vimrc
编辑vim的一些默认参数
云桌面
作用:给客户从云端分配PC机,让客户在云端办公;
- 安全
- 方便
【在vim中,“.”代表光标所在当前行:“.,$s/^/#/-----从光标所在当前行到行尾的开头替换成#”】
1~3 1,4,7,11----步长
/pattern1/,/pattern2----从模式1匹配到的行,到模式2匹配到的行1
数字,+N
/pattern1/,+N------".,+3s/^#//” 从光标所在当前行到后三行的开头替换成空