nl
nl : 在linux系统中用来计算文件中行号.
nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
[root@CENTOS7-20200707 ~]# nl -b a -n rz /etc/passwd #内容按行号右对齐补0列出
000001 root:x:0:0:root:/root:/bin/bash
000002 bin:x:1:1:bin:/bin:/sbin/nologin
000003 daemon:x:2:2:daemon:/sbin:/sbin/nologin
000004 adm:x:3:4:adm:/var/adm:/sbin/nologin
000005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
000006 sync:x:5:0:sync:/sbin:/bin/sync
000007 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
000008 halt:x:7:0:halt:/sbin:/sbin/halt
000009 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
...
[root@CENTOS7-20200707 ~]# nl -b a -n rn /etc/passwd #内容按行号右对齐(不补0)列出
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
...
[root@CENTOS7-20200707 ~]# nl -b a -n ln /etc/passwd #内容按行号左对齐(不补0)列出
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
...
sed
sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像。
sed按顺序逐行读取文件。
sed执行为该行指定的所有操作,并在完成请求的修改之后的内容显示出来,也可以存放到文件中。
参数 -i[扩展名], --in-place[=扩展名] 直接修改文件(如果指定扩展名就备份文件)
[root@CENTOS7-20200707 ~]# cat ./myfile.txt | grep "johnny" | sed 's/johnny/hello/g' [直接将将文本中出现"johnny"的行中的"johnny"内容全部替换为"hello"]
(格式: sed 's/将被替换的字符/新的字符/g')
[root@CENTOS7-20200707 ~]# cat ./myfile.txt | grep "johnny" | sed -i 's/johnny/hello/g' [直接将将文本中出现"johnny"的行中的"johnny"内容全部替换为"hello"]
(参数-i: 可让sed直接去修改后面接的文件内容而非屏幕输出)
[root@CENTOS7-20200707 ~]# nl -b a -n rz /etc/passwd | sed '2,5d' # /etc/passwd文件内容按行号右对齐补0列出,且删除第2-5行
000001 root:x:0:0:root:/root:/bin/bash
000006 sync:x:5:0:sync:/sbin:/bin/sync
000007 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
000008 halt:x:7:0:halt:/sbin:/sbin/halt
000009 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
000010 operator:x:11:0:operator:/root:/sbin/nologin
...
awk
awk有3种形式:awk,gawk,nawk。平时所说的awk,其实就是gawk。
- F: 指定字段分隔符
[root@CENTOS7-20200707 johnny]# echo "32:34" |awk -F: '{print "max = ",max($1,$2)}
> function max(one,two){
> if(one > two){
> return one;
> }else{
> return two;
> }
> }'
max = 34
[root@CENTOS7-20200707 johnny]# echo "aa bb cc : dd ee ff" | awk -F ':' '{print $1}' 【F: 指定字段分隔符】
aa bb cc
- FS(字段分隔符)
默认: 空格,制表符
$0 表示当前整行内容; $1,$ 2 表示第一个字段,第二个字段
[root@CENTOS7-20200707 johnny]# echo "aa bb cc dd" | awk '{ print $0}'
aa bb cc dd
[root@CENTOS7-20200707 johnny]# echo "aa bb cc dd" | awk '{ print $1}'
aa
wc
为统计指定文件中的字节数、单词数、行数, 并将统计结果显示输出
[root@CENTOS7-20200707 johnny]# cat /etc/passwd | wc -l # 查看passwd文件有多少行
22
[root@CENTOS7-20200707 johnny]# echo "aaa bbb ccc" |wc -w # 查看输出有多少个单词
3
[root@CENTOS7-20200707 johnny]# cat /etc/passwd | grep "root" | wc -l # 统计指定文件中出现"root"字符的总行数
2
[root@CENTOS7-20200707 johnny]# echo "12344hbjkl" |wc -m # 查看输出有多少个字符
11
xargs
xargs 又称管道命令,构造参数等;
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理 。
即 把其他命令的给它的数据 传递给它后面的命令作为参数
[root@CENTOS7-20200707 johnny]# find /usr/sbin /7000 | xargs ls -l [找出/usr/sbin下具有特殊权限7000的文件名,并使用ls -l列出详细属性]
[root@localhost ~]# ls | grep .php | xargs -i mv {} {}.bak [将当前目录下php文件,改名字]
(参数-i : {} 代替 传递的数据)