Linux高级命令

Posted 熊老二-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux高级命令相关的知识,希望对你有一定的参考价值。

uniq命令
uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用,通过sort排序将相同的行放在一起,然后实现去重。
目标
uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
路径
第一步:实现去重效果
第二步:不但去重,还要统计出现的次数
实现
第一步:实现去重效果

准备工作

vim uniq_demo.txt
张三 98
李四 100
王五 90
赵六 95
麻七 70
李四 100
王五 90
赵六 95
麻七 70

实现1:简单去重,必须要加sort

[root@localhost data]# cat uniq_demo.txt  |sort| uniq  
李四 100
麻七 70
王五 90
张三 98
赵六 95

实现2: 实现去重效果(按照成绩排序,降序,去重)

[root@node1 data]# cat uniq_demo.txt | sort -t ' ' -k 2 -n -r | uniq 
李四 	100
麻七 	70
王五 	90
张三	 98
赵六 	95

第二步:不但去重,还要统计出现的次数

[root@node1 data]# cat uniq_demo.txt |sort| uniq -c
      2 李四	100
      2 麻七	70
      2 王五	90
      1 张三	98 
      2 赵六	95

wc命令
wc命令:统计行数 单词数 字节数
在默认的情况下,wc将计算指定文件的行数、字数以及字节数。
命令使用格式为:
wc 文件名

实例:
有个文件test_wc.txt,内容如下:

 1	11
 222 bbb
333 aaa bbb 
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee

1)统计指定文件行数、字数、字节数

[root@node1 shell]# wc test_wc.txt 
 6 21 85 test_wc.txt
#行数为6, 单词数为21, 字节数为85

2)查看根目录下有多少个文件

[root@node1 shell]# ls / | wc -w
24

awk命令
简介
awk是一种处理文本文件的命令,是一个强大的文本分析工具,它支持分段,默认每行按空格或TAB分割。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定
义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
语法:

awk [-F field-separator] 'commands' input-file(s) 
或
awk -F|-f|-v 'BEGIN  / / comand1;comand2 END ' file
-F 定义列分隔符
-f 指定调用脚本
-v 定义变量
' '引用代码块,awk执行语句必须包含在内
BEGIN  初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
  命令代码块,包含一条或多条命令
// 用来定义需要匹配的模式(字符串或者正则表达式),对满足匹配模式的行进行上条代码块的操作
END   结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息

运行方式:

命令行方式

awk [-F field-separator] 'commands' input-file(s) 

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,通过键入脚本名称来调用。 相当于shell脚本首行的:#!/bin/sh 可以换成:#!/bin/awk。

变量分配:
默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段:
$0 代表整个文本行;
$1 代表文本行中的第 1 个数据字段;
$2 代表文本行中的第 2 个数据字段;
$n 代表文本行中的第 n 个数据字段。

print和printf
awk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

以上是关于Linux高级命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux高级Shell脚本讲解

Linux shell命令讲解

Linux三剑客之grep命令详解

Linux高效数据统计命令wc

linux命令结尾加斜杠与不加斜杠的区别

Linux管理文件命令-tail查看文件结尾的内容