2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Shell编程之cut 列提取命令 printf 格式化输出

Shell编程之cut 列提取命令 printf 格式化输出

时间:2018-11-13 14:40:11

相关推荐

Shell编程之cut 列提取命令 printf 格式化输出

目录

cut 列提取命令

printf 格式化输出

cut 列提取命令

[root@localhost ~]# cut [选项] 文件名

选项-f 列号: 提取第几列-d 分隔符: 按照指定分隔符分割列-c 字符范围: 不依赖分隔符来区分列,而是通过字符范围(行首为 0)来进行字段提取。“n-”表示从第 n 个字符到行尾;“n-m”从第 n 个字符到第 m个字符;“-m”表示从第 1 个字符到第 m 个字符。cut 命令的默认分隔符是制表符,也就是“tab”键,不过对空格符可是支持的不怎么好啊。我们先建立一个测试文件,然后看看 cut 命令的作用吧:

[root@localhost ~]# cut -f 2 student.txt#提取第二列内容

那如果想要提取多列呢?只要列号直接用“,”分开,命令如下:

[root@localhost ~]# cut -f 2,3 student.txt

cut 可以按照字符进行提取,需要注意“8-”代表的是提取所有行的第十个字符开始到行尾,而“10-20”代表提取所有行的第十个字符到第二十个字符,而“-8”代表提取所有行从行首到第八个字符:

[root@localhost ~]# cut -c 8- student.txt #提取第八个字符开始到行尾,好像很乱啊,那是因为每行的字符个数不相等啊

[root@localhost ~]# cut -d ":" -f 1,3 /etc/passwd #以“:”作为分隔符,提取/etc/passwd 文件的第一列和第三列

如果我想用 cut 命令截取 df 命令的第一列和第三列,就会出现这样的情况:

[root@localhost ~]# df -h | cut -d " " -f 1,3

printf 格式化输出

[root@localhost ~]# printf ‘输出类型输出格式’ 输出内容

输出类型:%ns: 输出字符串。n 是数字指代输出几个字符%ni: 输出整数。n 是数字指代输出几个数字%m.nf: 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出 8 位数,其中 2 位是小数,6 位是整数。输出格式:\a: 输出警告声音\b: 输出退格键,也就是 Backspace 键\f: 清除屏幕\n: 换行\r: 回车,也就是 Enter 键\t: 水平输出退格键,也就是 Tab 键\v: 垂直输出退格键,也就是 Tab 键为了演示 printf 命令,我们需要修改下刚刚 cut 命令使用的 student.txt 文件,文件内容如下: 我们使用 printf 命令输出下这个文件的内容:

[root@localhost ~]# printf '%s' $(cat student.txt)IDNamegenderPHPLinuxMySQLAverage1LimingM82958687.662ScM74968785.663TgM99839391.66[root@localhost ~]#

这就是 printf 命令,如果不指定输出格式,则会把所有输出内容连在一起输出。其实文本的输出本身就是这样的,cat 等文本输出命令之所以可以按照格式漂亮的输出,那是因为 cat 命令已经设定了输出格式。那么为了用 printf 输出合理的格式,应该这样做: 如果不想把成绩当成字符串输出,而是按照整型和浮点型输出,则要这样:

[root@localhost ~]# printf '%i\t %s\t %i\t %i\t %i\t %8.2f\t \n' \$(cat student.txt | grep -v Name)

【注】:参考尚硅谷沈超老师教程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。