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高级命令的主要内容,如果未能解决你的问题,请参考以下文章