Linux学习之字符串截取
2016-06-04 16:30
239 查看
1、cut命令
grep是提取符合条件的行,cut是提取符合条件的列。
如果使用cut命令,那么对应的文件内容必须使用制表符进行编辑,因为cut命令的-d选项默认是制表符。如果文件列是通过其他符号进行分割的,需要通过-d进行指定。
cut -f 2 students 表示提取student文件中的第2列。
cut -f 2,4 students 表示提取student文件中的第2列和第4列。
cut -d ":" -f 2,3 /etc/passwd 表示提取文件passwd中的第2列和第3列,由于passwd的列是通过:分割的,所以需要用-d进行指定分隔符。
grep abc 表示包含abc字符串的内容,grep -v abc 则表示不包含abc字符串的内容。-v是取反的意思。
cut命令可以手动指定文件名,也可以通过管道符将命令执行的结果作为截取的对象。例如:cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
cut命令的局限性在于当文件内容是用多个空格进行分隔时,很难处理正确。
2、printf命令
printf命令后面不能接文件名,也不能接管道符。
如果要输出文件的内容,需要执行 printf "%s" $(cat student.txt) 即把cat student.txt的执行结果作为字符串打印出来。
注意 %s需要用引号括起来,尤其是需要多个%s时,例如 printf "%s %s %s\n" 1 2 3 4 5 6
示例:
第2个命令表示每6个字段一行,每个字段之间用tab分隔符隔开
说明:
3、awk命令
可以没有条件,直接动作。
示例1:
这里没有条件,直接动作。
第1条命令表示输出文件中的第2列和第6列,列与列之间用制表符隔开,每行两列。
第2条命令表示将df -h命令的执行结果中的第1列和第3列输出来,用cut命令无法打印,因为列与列之间是用空格隔开的。
print命令会自动在每行末尾加上换行符。
示例2:
包含两个动作,第一个动作有前置条件,第二个动作没有。
BEGIN表示在读取数据之前,在这里表示在读取数据之前,打印一条信息:This is a transcript
示例3:
END表示在数据读取结束后,在这里表示当所有数据读取完后,打印信息:The End
示例4:
FS用于指定文件内容的分隔符,在这里表示,在读取数据之前将内容的分隔符指定为:
示例5:
| grep -v Name表示过滤掉包含Name字符串的行,因为下面涉及到数值运算,所以需要将标题行去掉。
如果 第6行的值大于等于87,那么就将第2行的值输出。
4、sed命令
sed相当于一个内容编辑器,和vim不同的是,vim只可用来编辑文件内容,而sed不仅可以用来编辑文件内容,还可以将命令的执行结果进行编辑。
例如:df -h | sed -n '2p' 表示将命令执行结果的第2行输出。
注意动作需要用引号括起来。
示例1:
第1条命令会把整个文件内容都输出来,而且会把第二行的内容输出两遍。
第2条命令则只会把第二行内容输出来,因为加了选项 -n
示例2:
‘2,4d’表示删除第2到第4行,包括第3行,是个范围。
示例3:
第2条命令插入的两行数据分别为:hello、world
示例4:
将第2行替换为No such person
示例5:
如果s前面没有加行号,则表示替换整篇文档。
-e 选项表示可以同时进行多项操作,各操作间用;隔开
grep是提取符合条件的行,cut是提取符合条件的列。
如果使用cut命令,那么对应的文件内容必须使用制表符进行编辑,因为cut命令的-d选项默认是制表符。如果文件列是通过其他符号进行分割的,需要通过-d进行指定。
cut -f 2 students 表示提取student文件中的第2列。
cut -f 2,4 students 表示提取student文件中的第2列和第4列。
cut -d ":" -f 2,3 /etc/passwd 表示提取文件passwd中的第2列和第3列,由于passwd的列是通过:分割的,所以需要用-d进行指定分隔符。
grep abc 表示包含abc字符串的内容,grep -v abc 则表示不包含abc字符串的内容。-v是取反的意思。
cut命令可以手动指定文件名,也可以通过管道符将命令执行的结果作为截取的对象。例如:cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
cut命令的局限性在于当文件内容是用多个空格进行分隔时,很难处理正确。
2、printf命令
printf命令后面不能接文件名,也不能接管道符。
如果要输出文件的内容,需要执行 printf "%s" $(cat student.txt) 即把cat student.txt的执行结果作为字符串打印出来。
注意 %s需要用引号括起来,尤其是需要多个%s时,例如 printf "%s %s %s\n" 1 2 3 4 5 6
示例:
第2个命令表示每6个字段一行,每个字段之间用tab分隔符隔开
说明:
3、awk命令
可以没有条件,直接动作。
示例1:
这里没有条件,直接动作。
第1条命令表示输出文件中的第2列和第6列,列与列之间用制表符隔开,每行两列。
第2条命令表示将df -h命令的执行结果中的第1列和第3列输出来,用cut命令无法打印,因为列与列之间是用空格隔开的。
print命令会自动在每行末尾加上换行符。
示例2:
包含两个动作,第一个动作有前置条件,第二个动作没有。
BEGIN表示在读取数据之前,在这里表示在读取数据之前,打印一条信息:This is a transcript
示例3:
END表示在数据读取结束后,在这里表示当所有数据读取完后,打印信息:The End
示例4:
FS用于指定文件内容的分隔符,在这里表示,在读取数据之前将内容的分隔符指定为:
示例5:
| grep -v Name表示过滤掉包含Name字符串的行,因为下面涉及到数值运算,所以需要将标题行去掉。
如果 第6行的值大于等于87,那么就将第2行的值输出。
4、sed命令
sed相当于一个内容编辑器,和vim不同的是,vim只可用来编辑文件内容,而sed不仅可以用来编辑文件内容,还可以将命令的执行结果进行编辑。
例如:df -h | sed -n '2p' 表示将命令执行结果的第2行输出。
注意动作需要用引号括起来。
示例1:
第1条命令会把整个文件内容都输出来,而且会把第二行的内容输出两遍。
第2条命令则只会把第二行内容输出来,因为加了选项 -n
示例2:
‘2,4d’表示删除第2到第4行,包括第3行,是个范围。
示例3:
第2条命令插入的两行数据分别为:hello、world
示例4:
将第2行替换为No such person
示例5:
如果s前面没有加行号,则表示替换整篇文档。
-e 选项表示可以同时进行多项操作,各操作间用;隔开
相关文章推荐
- Linux课程实践一:Linux基础实践(SSH)
- linux里的nvme驱动代码分析(加载初始化)
- Linux GCC常用命令
- centos7.0下lnmp环境搭建
- linux 基础学习图解
- 在CentOs6.5安装jdk
- 浅析 Linux 文件权限
- linux常用命令之压缩打包
- linux常用命令之压缩打包
- centos7.0下lamp环境搭建
- ESXi5.5下的Centos7虚机配置静态IP
- linux vim
- 搭建linux 环境
- Linux Shell 功能指令收集
- linux中手动安装的软件的快捷方式的创建
- ARM linux kernel启动流程
- Linux配置vim ctags g++ IDE GDB
- CentOS7手动释放内存
- centos7中的f t p安装设置
- Linux中tty、pty、pts的概念区别 转载