linux高级命令
1. 重定向命令:
1. 重定向命令: 符号: > 重定向 覆盖 功能:允许将命令结果重定向到一个文件 符号: >> 重定向 追加 功能:输出内容追加到目标文件中的末尾 案例1: 需求:将/目录下文件的详情保存到test.txt文件中 ll / > test222.txt 案例2: 追加 1.txt 中的内容追加到 test222.txt cat 1.txt >> test222.txt
讯享网
2. cut:文件内容查看命令
讯享网2. cut:文件内容查看命令,cut命令可以从一个文本文件或者文本流中提 取文本列。 cut命令参数解释 参数 解释 -b 按字节选取 忽略多字节字符边界 -c 仅显示行中指定范围的字符 -d 自定义分隔符,默认为制表符 -f 与-d一起使用,指定显示哪个区域。 -n 与“-b”选项连用,不分割多字节字符; --complement 补足被选择的字节、字符或字段; --out-delimiter=<字段分隔符> 指定输出内容是的字段分割符; --help 显示指令的帮助信息; --version 显示指令的版本信息。 案例: 实例: 如有一个学生报表信息文件stu.txt,包含id、name、age、score. id name age score 01 tom 18 78 02 jack 20 85 03 bill 16 90 04 mary 24 77 05 anna 21 85 1)使用-d和-f显示文件中的指定的列 [root@localhost shell]# cut -d ' ' -f 1 stu.txt id 01 02 03 -f 与-d一起使用,指定显示哪个区域。 04 -d 自定义分隔符,默认为制表符 05 ' ' 代表按空格切割 2)#显示name和age列 [root@localhost shell]# cut -d ' ' -f2,3 stu.txt name age tom 18 jack 20 bill 16 mary 24 anna 21 解释: -d “ ” :用来指定文件字段之间的分隔符,如果文件的分隔符 是制表符则不需要指定该参数 -f 数字 :用来指定哪一列 3) --complement 选项提取指定字段之外的列(打印除了第二列之外的列) [root@localhost shell]# cut -d ' ' -f2 --complement stu.txt id age score 01 18 78 02 20 85 03 16 90 04 24 77 05 21 85 4)指定字段的字符或者字节范围 cut命令可以将一串字符作为列来显示,字符字段的记法: N-:从第N个字节、字符、字段到结尾; N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段; -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。 #打印第1个到第3个字符: [root@node1 shell]# cut -c 1-4 stu.txt #(包左不包右) id n 01 t 02 j 03 b 04 m 05 a #打印前两个字符 [root@localhost shell]# cut -c -2 stu.txt id 01 02 03 04 05 #打印第2个后的到结尾字符 [root@localhost shell]# cut -c 2- stu.txt d name age score 1 tom 18 78 2 jack 20 85 3 bill 16 90 4 mary 24 77 5 anna 21 85
3. wc命令:统计行数 单词数 字节数
wc命令:统计行数 单词数 字节数 在默认的情况下,wc将计算指定文件的行数、字数以及字节数。 命令使用格式为: wc 文件名 wc命令参数 参数 解释 -l 统计行数 -c 统计字节数 -w 统计单词数 -m 统计字符数 #统计 test_wc.txt 有多少行 wc -l test_wc.txt
4.awk命令(重点)
简介: awk是一种处理文本文件的命令,是一个强大的文本分析工具,它支持分段,默认每行按空格或TAB分割。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
讯享网语法: awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s) 选项参数说明: -F 指定输入文件的分隔符 -v var=value or --asign var=value 赋值一个用户定义变量。 -f scripfile or --file scriptfile 从脚本文件中读取awk命令。

变量分配: 默认情况下,awk 会将如下变量分配给它在文本行中发现的数据字段: $0 代表整个文本行; $1 代表文本行中的第 1 个数据字段; $2 代表文本行中的第 2 个数据字段; $n 代表文本行中的第 n 个数据字段。 print和printf awk中同时提供了print和printf两种打印输出的函数。 其中print函数的参数可以是变量、数值或者字符串。字符串必须用双 引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。 这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。 printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。
awk案例
讯享网默认每行按空格或TAB分割,使用$n来获取段号 awk.txt,内容如下: aaa 111 333 bbb 444 555 ccc 666 777 888 ddd 999 222 999 1) 打印awk.txt 第一段 [root@localhost shell]# awk '{print $1}' awk.txt aaa bbb ccc ddd 2) 打印awk.txt 第1,2,3段 [root@localhost shell]# awk '{print $1,$2,$3}' awk.txt aaa 111 333 bbb 444 555 ccc 666 777 ddd 999 222 3) 打印awk.txt 第1 2段 且用 @符号链接 [root@localhost shell]# awk '{print $1"@"$2}' awk.txt aaa@111 bbb@444 ccc@666 ddd@999 4) 打印awk.txt全部 [root@localhost shell]# awk '{print $0}' awk.txt aaa 111 333 bbb 444 555 ccc 666 777 888 ddd 999 222 999
段之间的连接符OFS, 指定分隔符-F
案例: OFS用来指定输出记录分隔符 1) awk.txt 文件 1 2 3列用 @ 标记符链接 [root@localhost shell]# awk '{OFS="@"} {print $1,$2,$3}' awk.txt aaa@111@333 bbb@444@555 ccc@666@777 ddd@999@222 创建awk2.txt,内容如下: aaa:111:333 bbb:444:555 ccc:666:777:888 ddd:999:222:999:cccc 2) 打印 awk2.txt 第一行 [root@localhost shell]# awk -F ':' '{print $1}' awk2.txt aaa bbb ccc ddd 3) 打印awk2.txt 所有段 [root@localhost shell]# awk -F ':' '{print $0}' awk2.txt aaa:111:333 bbb:444:555 ccc:666:777:888 ddd:999:222:999:cccc
正则内容匹配
讯享网这里的内容匹配需要使用正则表达式,常用的正则表达式规则如下: 1、^linux 以linux开头的行 2、$php 以php结尾的行 3、. 匹配任意单字符 4、.+ 匹配任意多个字符 5、 .* 匹配0个或多个字符(可有可无) 6、 [0-9a-z] 匹配中括号内任意一个字符 7、 (linux)+ 出现多次Linux单词 8、 (web){
2} web出现两次以上 9、\ 屏蔽转义 案例: 1) 匹配 awk2.txt中包含 cc的内容 awk '/cc/' awk2.txt ccc:666:777:888 ddd:999:222:999:cccc 2) 匹配 awk2.txt 中农第一段包含 cc 的内容 awk -F ':' '$1 ~/cc/' awk2.txt ccc:666:777:888 3) 匹配awk2.txt中第5段包含至少连续两个c的内容 awk -F ':' '$5 ~/cc+/' awk2.txt ddd:999:222:999:cccc 4) 在awk2.txt中如果匹配到aaa就打印第1,3段,如果匹配 到ccc,就打印第1,3,4段 awk -F ':' '/aaa/{print $1,$3} /ccc/{print $1,$3,$4}' awk2.txt aaa 333 ccc 777 888 ddd 222 999 5) 在awk2.txt中如果匹配到aaa或者ddd,就打印全部内容 awk -F ':' '/aaa/||/ddd/{print $0}' awk2.txt aaa:111:333 ddd:999:222:999:cccc
段内容判断
在awk命令中,支持很多运算符,使用这些运算符可以进行段内容判断 运算符 解释 = += -= *= /= %= ^= = 赋值 ?: C条件表达式 || 逻辑或 && 逻辑与 ~ 和 !~ 匹配正则表达式和不匹配正则表达式 < <= > >= != == 关系运算符 空格 连接 + - 加,减 * / % 乘,除与求余 + - ! 一元加,减和逻辑非 ^ * 求幂 ++ -- 增加或减少,作为前缀或后缀 $ 字段引用 in 数组成员 案例: 还是拿 awk2.txt 来干活 1) 在awk2.txt中如果第3段等于222就打印所有内容 awk -F ':' '$3==222{print $0}' awk2.txt ddd:999:222:999:cccc 2) awk2.txt中如果第5段不等于cccc就打印全部 awk -F ':' '$5!="cccc" {print $0}' awk2.txt aaa:111:333 bbb:444:555 ccc:666:777:888 3) 在awk2.txt中如果第1段等于ccc,并且第2段匹配666就打印全部 awk -F ':' '$1=="ccc" && $2==666 {print $0}' awk2.txt ccc:666:777:888 4) 在_awk2.txt中如果第2段等于第4段就打印全部 awk -F ':' '$2==$4{print $0}' awk2.txt ddd:999:222:999:cccc
1.4.8.NR行号和NF段数
讯享网NF 一条记录的字段的数目 NR 已经读出的记录数,就是行号,从1开始 1)从awk2.txt的前3行中匹配出第2段等于 666,并显示行号 awk -F ':' 'NR <=3 && $2==666 {print $0}' awk2.txt ccc:666:777:888 2) 打印awk2.txt全部内容显示行号 awk -F ':' '{print NR " "$0}' awk2.txt 1 aaa:111:333 2 bbb:444:555 3 ccc:666:777:888 4 ddd:999:222:999:cccc 3)打印awk2.txt前2行,并且第1段匹配 aaa或者eee,打印全部,打印行号 awk -F ':' 'NR <=2 && $1 ~/aaa/||/eee/ {print $0}' awk2.txt aaa:111:333
分段求和
awk 中还可以指定脚本命令的运行时机。默认情况下,awk 会从输入中读取一行文本,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用 BEGIN 关键字。BEGIN 会强制 awk 在读取数据前执行该关键字后指定的脚本命令。 案例: 1) 对awk2.txt中的第2段求和 awk -F ':' 'BEGIN{}{total=total+$2}END{print total}' awk2.txt #2220 2) 打印 9*9 乘法表 awk 'BEGIN{ for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%dx%d=%d%s", i, j, i*j, "\t" ) } printf("\n") } }'
5. sort命令
讯享网sort可针对文本文件的内容,以行为单位来默认字典排序。 准备数据: sort.txt banana apple peer orange pear orange 1) 对数据进行排序 sort sort.txt apple banana orange orange pear peer 2) 获取当前文件中不重复的内容 sort -u sort.txt apple banana orange pear peer 3) 对数字升序排序 sort -n sort.txt 参数 英文 含义 -t field-separator 指定字段分隔符 -k key 根据那一列排序
6.uniq 命令
用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用,通过sort排序将相同的行放在一起,然后实现去重。 现在有a.txt 张三 98 李四 100 王五 90 赵六 95 麻七 70 李四 100 王五 90 赵六 95 麻七 70 1) 将文本数据排序并去重 cat a.txt | sort | uniq 李四 100 麻七 70 王五 90 张三 98 赵六 95 #可选项 -c:统计每行内容出现的次数 #sort # -t切割符号 # -k取第2列 # -n以数字形式 # -r倒序 2)实现去重效果,按照成绩排序,降序,去重 cat a.txt | sort -t ' ' -k 2 -n -r | uniq 李四 100 麻七 70 王五 90 张三 98 赵六 95 3) 对文件排序并去重统计每行内容出现的次数 cat a.txt |sort| uniq -c 2 李四 100 2 麻七 70 2 王五 90 1 张三 98 2 赵六 95

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17913.html