shell脚本编程学习笔记6——字符串截取命令
1,cut命令
[root@localhost ~]# cut [选项] 文件名 -f 列号,表示提取第几列 -d 分隔符,按照指定的分隔符分割列 注意:默认分隔符是制表符 实例: cut -f 2 filename 按照制表符分隔的,提取第二列 cut -f 2,3 filename 提取第二列和第三列 cut -d ":" -f 1,3 按照:为分隔符提取1和3列 cut局限性: 不能提取分隔不是很明确的列,所以需要awk来提取。cut比较简单
2,printf命令
[root@li1079-128 ~]# printf '输出类型输出格式' 输出内容 输出类型: %ns 输出字符串,n是数字指代输出几个字符 %ni 输出整数,n是数字指代输出几个数字 %m.nf 输出浮点数,m和n代表整数位书和小数位数,%8.2f 总共8位,小数点后两位 输出格式: \a 输出警告音 \b 输出退格键,backspace \f 清除屏幕 \n 换行 \t 水平输出退格 tab \r 回车 \v 垂直输出退格 tab 注意:awk命令的输出中,支持print和printf,print会在每个输出之后自动加入换行符 printf标准格式的输出命令,不带换行符。
3,awk
[root@li1079-128 ~]# awk 'case1{action1}case2{action2}...' case: 关系表达式作为判断条件 action 格式化输出,流程控制等 实例: [root@li1079-128 ~]# df -h | awk '{printf $1"\t"$3"\n"}' BEGIN{执行之前定义} END{执行之后定义} 实例:# cat /etc/passwd | grep "/bin/bash" | \ awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}' 以上例子用了BEGIN定义了分隔符 关系运算 实例:# cat student.txt | grep -v Name | \ awk '$6 >= 87 {printf $2 "\n" }'
4,sed
简介:sed 是一种几乎包括在所有 UNIX 平台( 包括 Linux)的轻量级流编辑器。 sed主要 是用来将数据进行选取、替换、删除、新 增的命令 [root@localhost ~]# sed [选项] ‘[动作]’ 文件名 选项: -n: 一般sed命令会把所有数据都输出到屏幕 , 如果加入此选择,则只会把经过sed命令处 理的行输出到屏幕。 -e: 允许对输入数据应用多条sed命令编辑 -i: 用sed的修改结果直接修改读取数据的文件, 而不是由屏幕输出 动作: a \: 追加,在当前行后添加一行或多行。添加多行时,除最后一行外, 每行末尾需要用“\”代表数据未完结。 c \: 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外, 每行末尾需用“\”代表数据未完结。 i \: 插入,在当期行前插入一行或多行。插入多行时,除最后一行外, 每行末尾需要用“\”代表数据未完结。 d: 删除,删除指定的行。 p: 打印,输出指定的行。 s: 字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字 串/g”(和vim中的替换格式类似)。 实例: [root@localhost ~]# sed '2p' student.txt [root@localhost ~]# sed -n '2p' student.txt [root@localhost ~]# sed '2,4d' student.txt # 删除第二行到第四行的数据 ,但不修改文 件本身 [root@localhost ~]# sed '2a hello' student.txt # 在第二行后 追 加 hello [root@localhost ~]# sed '2i hello \ world' student.txt # 在第二行前插入两行数据 # sed '2c No such person‘ student.txt # 数据替换 # sed ‘s/旧字串/新字串/g’ 文件名 # sed '3s/74/99/g' student.txt # 在第三行中,把 74 换成 99 #sed -i '3s/74/99/g' student.txt #sed操作的数据直接写入文件 # sed -e 's/Liming//g ; s/Gao//g' student.txt # 同时把“ Liming ”和“ Gao ”替换为空