九、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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章