九、Linux shell 编程
1、正则表达式
正则表达式用来在文件中匹配符合条件的字符串,正则式包含匹配
例子:
hello world
grep "wo" 这一行中包含wo这个字串就可以找到这一行
通配符用来匹配符合条件的文件名,通配符是完全匹配。
hello world
ls wo 这一行中只能包括wo这个字串才能找到,即这行只有2个字符
grep -n "^12" test.txt 查找以12开头的行
grep -n "1.\{9\}2" test.txt 查找以1开头2结尾中间是任意字符的行
grep -n "12$" test.txt 查找以12结尾的行
使用时对照上面的表即可
2、字符截取
cut [选项] 文件名
-f 列号: 提取第几列
-d 分隔符: 用指定分隔符分隔列
cut -f 1 student.txt 提取第一列
cut -d ":" -f 1,3 /etc/passwd 根据冒号提取1,3列
cut命令提取的文件必须用制表符分隔,不然会截取失败
printf '输出类型输出格式' 输出内容
%ns 输出字符串,n是数字指代输出几个字符
%ni 输出整数,n指代输出几个数字
%m.nf 输出浮点数。m和n是数字。指代输出的位数和其中小数的输出位数 8.2f 表示一共输出8位,小数输出2位
printf %s 1 2 3 4 5 6 输出123456
printf %s %s %s 1 2 3 4 5 6 输出 %s %s 1 2 3 4 5 6
printf ‘%s %s %s\n’ 1 2 3 4 5 6
输出: 1 2 3
4 5 6
awk '条件1{动作1} 条件2{动作2}...' 文件名
awk '{printf &1 &2}' student.txt 输出第一列和第二列
df -h | awk 'print $1 $5' 提取df -h 输出内容的第一列和第五列
sed 是一种轻量级流编辑器。sed主要是用来将数据进行选区、替换、删除、新增的命令。
sed [选项] '[动作]' 文件名
选项:
-n 只把经过sed命令处理过的行输出到屏幕
-e 允许对输入数据应用多条sed命令编辑器
-i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
a\: 追加,在当前行末尾添加,添加多行时,除最后一行,每一行末尾要加“\”
c\: 行替换 用c后面的字符串替换源数据行,替换多行时,除最后一行,每一行末尾要加“\”
i\: 插入 在当前行前插入一行或多行数据,多行时,除最后一行,每一行末尾要加“\”
d\: 删除,删除指定行
p\: 打印 输出指定行
s\: 字串替换
sed '2p' student.txt
sed -n '2p' student.txt
sed '1,2d' student.txt
sed '1i hello' student.txt
sed 's/旧字串/新字串/g' 文件名
sed '2s/n/y/g' student.txt 把第二行中的n换成y