文本格式化输出
一、输出格式化命令printf
格式替换符
选项
功能描述
%s
字符串
%f
浮点格式
%c
ASCII字符,即显示对应参数的第一个字符
%d,%i
十进制整数
%o
八进制值
%u
不带正负号的十进制值
%x
十六进制值(a-f)
%X
十六进制值(A-F)
%%
表示%本身
常用转义字符
选项
功能描述
b
后退
f
换页
n
换行
r回车
t
水平制表符
v
垂直制表符
表示本身
二、简单文本格式化命令fmt
fmt命令用于编排文本文件。fmt指令会从指定的文件里读取内容,将其依照指定格式重新编排后,输出到标准输出设备。若指定的文件名为”-“,则fmt指令会从标准输入设备读取数据。
例如:
[root@localhost usr]# cat app.json { "pages":[ "pages/aboutme/aboutme", "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#0ff", "navigationBarTitleText": "第一个微信小程序" } } // 重新编排文件内容 [root@localhost usr]# fmt app.json { "pages":[ "pages/logs/logs"x",outme", "window":{ "navigationBarBackgroundColor":", "navigationBarTitleText": "第一个微信小程序" } }
三、行标号命令nl
nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。
[root@localhost usr]# nl a.txt 1lzp 2is a chinese man. 3jaskson 4is a usa man.
四、grep命令
grep [选项] [范本样式] [文件或目录…] 例子
当前目录下查找以file前缀的文件中含有lzp的行。
[root@localhost local]# ls android1 etc file2 include lib libexec sbin src afile bin file1 games jdk lib64 mysql share tomcat [root@localhost local]# grep lzp file* file1:lzp file2:lzp
五、管道
多命令执行符
格式
作用
;
命令1;命令2
多个命令顺序执行,命令之间没有任何逻辑联系
&&
命令1&&命令2
逻辑与;当命令1执行正确,则命令2才会执行;当命令2执行不正确,则命令2不会执行
||
命令1 || 命令2
逻辑或;当命令1执行不正确,则命令2才会执行当命令2执行正确,则命令2不会执行
例子:
同时执行多条命令
[root@localhost ~]# date;ls;cd /usr;date;ls Wed May 8 07:49:28 PDT 2019 anaconda-ks.cfg Documents install.log Music Public Videos Desktop Downloads install.log.syslog Pictures Templates Wed May 8 07:49:28 PDT 2019 bin etc include lib libexec sbin src dzqc games java lib64 local share tmp
如果其中一条命名发生错误,后面的命令依旧会执行。如date1命令错误,ls命令仍旧执行。
例2:同时执行ls和echo命令
[root@localhost usr]# ls && echo 'yes' bin etc include lib libexec sbin src dzqc games java lib64 local share tmp yes [root@localhost usr]# ls1 && echo yes bash: ls1: command not found
逻辑与表示命令ls和命令echo同时成功时同时或失败
实例3:ls和echo命令只执行其中一个。
[root@localhost usr]# ls || echo yes // 执行的ls,没有执行echo bin etc include lib libexec sbin src dzqc games java lib64 local share tmp [root@localhost usr]# ls1 || echo yes // 执行echo,没有执行ls1 bash: ls1: command not found yes
实例4:判断ls命令是否正确执行,如果正确执行打印success,不正确执行打印fail
[root@localhost usr]# date && echo success || echo fail Wed May 8 08:18:15 PDT 2019 success [root@localhost usr]# date1 && echo success || echo fail bash: date1: command not found fail
实例5:判断命令的执行结果
[root@localhost usr]# date1 || echo no && echo yes
管道符
语法:
命令1 | 命令2
命令1的正确输出作为命令2的操作对象
实例1:命令ls显示/etc目录下的文件,并将结果重定向到abc.txt文件中。再用more显示。
[root@localhost etc]# ls -al>abc.txt [root@localhost etc]# more abc.txt
上面的功能能使用一条命令吗?
[root@localhost etc]# ls /etc | more
将netstat命令的结果发到grep ,显示包含udp的行。
[root@localhost etc]# netstat -lntup | grep udp udp 0 0 0.0.0.0:631 0.0.0.0:* 1803/cupsd udp 0 0 0.0.0.0:68 0.0.0.0:* 2864/dhclient
将netstat命令的结果发到grep ,显示包含udp的行的数量。
[root@localhost etc]# netstat -lntup | grep udp | wc -l 2