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

   日期:2020-08-23     浏览:94    评论:0    
核心提示:目录cut 列提取命令printf 格式化输出cut 列提取命令[root@localhost ~]# cut [选项] 文件名选项: -f 列号: 提取第几列 -d 分隔符: 按照指定分隔符分割列 -c 字符范围: 不依赖分隔符来区分列,而是通过字符范围(行首为 0)来进行字段提取。“n-”表示从第 n 个字符到行尾;“n-m”从第 n 个字符到第 m个字符;“-m”表示从第 1 个字符到第 m 个字符。 cut 命令的默认分隔符是制表符,也就是“tab”键,不过对

目录

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)

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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服