Linux(入门基础):67---其他管道命令(wc、split、xargs)

一、显示行数、字数、字符数命令:wc

1.功能

  • 可以所处理数据的行数、字数、字符数

2.命令格式

  • wc  [参数]

相关参数

  • -l:仅列出行数
  • -w:仅列出多少字数
  • -m:仅列出多少字符

3.注意事项

  • 不加任何参数时,行数、字数、字符数都列出来。顺序依次为:行数、字数、字符数

4.演示案例

  • 列出行数、字数、字符数

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 列出行数、字数

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • last中有很多与账户无关的行。我们指向要有账号信息的那几行,并列出有多少行

Linux(入门基础):67---其他管道命令(wc、split、xargs)

Linux(入门基础):67---其他管道命令(wc、split、xargs)

二、划分命令:split

1.功能

  • 可以对文件进行划分,将一个大文件划分为多个小文件
  • 划分的方式分为:依据文件大小划分和依据文件行数划分

2.命令格式

  • split  [参数]  被划分的文件  生成的文件前缀名

相关选项与参数

  • -b:后面划分之后,每个文件的大小。单位:b、k、m等
  • -l:以行数来划分文件

3.注意事项

  • 划分之后的文件,文件前缀名为xx,则文件的名字格式为:xxxaa、xxxab、xxxac

4.演示案例

  • 案例一:将files划分为多个文件,每个文件300k,这些文件的后缀名files

split  -b  300k  ./files  files

Linux(入门基础):67---其他管道命令(wc、split、xargs)

划分之后将这个这些文件写入到filesback中

cat  filesa* >> filesback

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 案例二:利用ls输出信息,每10行记录成一个文件,文件名前缀为lsroot。使用wc查看这些文件中的行数

ls -al /  | split  -l 10  -  lsroot

wc  -l  lsroot*

Linux(入门基础):67---其他管道命令(wc、split、xargs)

三、参数代换命令:xargs

1.功能

  • 我们知道一个命令执行时,需要一些参数,例如:文件名,路径,文字信息等...
  • xargs就代表上面那些命令执行时所需要的参数,这些参数来自于|前面的stdin。配合|使用

2.注意事项

  • 因为xargs读入的是stdin的数据,并且以空格符或换行符作为标识符,将stdin的数据分割成参数。因此:如果有一些文件名或者是其他意义的名词内含有空格符的时候,xargs就会误判

3.命令格式

  • xargs  [参数]   命令

相关选项与参数

  • -0:如果输入的stdin含有特殊字符时“`”、“\”、空格等时,这-0参数,可以将它还原成一般字符
  • -e:这是“EOF”的意思,后面接一个字符,当xargs分析到这个字符的时候,就会停止工作
  • -p:每次一次,都会询问执行者
  • -n:后面接次数,代表每次命令执行时,需要几个参数的意思

4.演示案例

  • 案例一:我们使用cut命令分割/etc/passwd文件的信息,得到第一栏的用户名并配合head取前三行,然后将这些用户名传给id命令查看。id命令每次只能接受一个参数
  • 错误案例①:因为id每次只能接受一个参数,所以用cut截取并用head得到前三行,会有三个参数传给id,所以执行这条命令会出错

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 错误案例②:因为id不是管道命令,所以处理到id的时候,只执行id命令,前面的命令全部都没了

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 错误案例③:xargs可以代表前面传来的stdin,即三个用户名,也就是三个参数。但是id每次只能执行一个参数,所以仍然会出错

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 正确案例:前面用cut和head得到了三个用户名,这三个用户名作为stdin传给后面的xargs,xargs配合-n参数每次传给id一个参数,因此id就能够处理

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 案例二:承上面的正确案例。每次执行时询问执行者

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 案例三:承上,将/etc/passwd的账号都用id查看,但是查看到sync的时候就停止。图一和图二比较,可以看到刚好执行到那一行停止了

Linux(入门基础):67---其他管道命令(wc、split、xargs)

Linux(入门基础):67---其他管道命令(wc、split、xargs)

  • 案例四:将/usr/sbin下面有特殊权限的文件进行查看

Linux(入门基础):67---其他管道命令(wc、split、xargs)