www.91084.com

GVKun编程网logo

centos 7中的文本处理工具sed命令的使用(centos7文本编辑命令)

7

本篇文章给大家谈谈centos7中的文本处理工具sed命令的使用,以及centos7文本编辑命令的知识点,同时本文还将给你拓展006.文本处理工具P2(常见文本处理工具)、centos7scp命令的使

本篇文章给大家谈谈centos 7中的文本处理工具sed命令的使用,以及centos7文本编辑命令的知识点,同时本文还将给你拓展006. 文本处理工具 P2 (常见文本处理工具)、centos 7 scp命令的使用、CentOS 7系统远程会话管理工具screen怎么安装使用?、Centos7 Shell编程之正则表达式、文本处理工具详解等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

centos 7中的文本处理工具sed命令的使用(centos7文本编辑命令)

centos 7中的文本处理工具sed命令的使用(centos7文本编辑命令)

sed是一个强大而简答的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于shell脚本中,用以完成各种自动化处理任务。
sed的工作流程主要包括读取、执行和显示三个过程:

  • 读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(也称为模式空间)。
  • 执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。

在所有的文件内容都被处理完之前,上述过程将重复执行,直至所有内容被处理完。

默认情况下,所有sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化(也就是说只是输出的内容变了,而实际的源文件并没有被改动),除非使用重定向存储输出。

sed命令的使用:
一般有两种使用格式:

sed  [选项]   ‘操作‘  参数 
sed  [选项]  -f  脚本文件  参数

常见的sed命令选项主要包含以下几种:

  • -e或--expression=:表示用指定命令或脚本来处理输入的文本文件;
  • -f或--file=:表示用指定的脚本文件来处理输入的文本文件;
  • -h或--help:显示帮助;
  • -n、--quiet或silent:表示仅显示处理后的结果;
  • -i:直接编辑源文本文件。

“操作”用于指定对文件操作的动作行为,也就是sed命令。通常情况下采用的“[n1],[n2]”操作参数的格式。n1、n2是可选的,不一定会存在,代表选择进行操作的行数,如操作需要在5~20行之间进行,则表示为“5,20 动作行为”。常见的操作包括以下几种:

  • a:增加,在当前行下面增加一行指定内容。
  • c:替换,将选定行替换为指定内容。
  • d:删除,删除选定的行。
  • i:插入,在选定行上面插入一行指定内容。
  • p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输入。其通常与“-n”选项一起使用。
  • s:替换,替换指定字符。
  • y:字符转换。

用法示例:

①、sed命令基本语法:

[[email protected] ~]# sed -n ‘p‘ test.txt              #输出所有内容,相当于cat testtest.txt
[[email protected] ~]# sed -n ‘3p‘ test.txt            #输出第三行。
[[email protected] ~]# sed -n ‘3,5p‘ test.txt         #输出3~5行。
[[email protected] ~]# sed -n ‘p;n‘ test.txt           #输出所有奇数行,n表示读入下一行资料。
[[email protected] ~]# sed -n ‘n;p‘ test.txt          #输出所有偶数行,n表示读入下一行资料。
[[email protected] ~]# sed -n ‘1,5{p;n}‘ test.txt    #输出1~5行之间的奇数行,第(1,3,5行)。
[[email protected] ~]# sed -n ‘10,${n;p}‘ test.txt      #输出第10行至文件尾之间的偶数行。

②、sed命令与正则表达式结合使用:

[[email protected] ~]# sed -n ‘/the/p‘ test.txt             #输出包含the的行
[[email protected] ~]# sed -n ‘4,/the/p‘ test.txt          #输出第4行至末尾第一个包含the的行。
[[email protected] ~]# sed -n ‘/the/=‘ test.txt            #输出包含the的行所在的行号,“=”用来输出行号
[[email protected] ~]# sed -n ‘/^PI/p‘ test.txt             #输出以PI开头的行
[[email protected] ~]# sed -n ‘/[0-9]$/p‘ test.txt             #输出以数字结尾的行
[[email protected] ~]# sed -n ‘/\<wood\>/p‘ test.txt      #输出包含单词wood的行,\<、\>表示单词边界。

③、删除符合条件的文本(以下操作只是输出时删除,若要删除源文件,则需结合“-i”选项):

[[email protected] ~]# nl test.txt | sed ‘3d‘       #删除第三行
[[email protected] ~]# nl test.txt | sed ‘3,5d‘     #删除第3~5行
[[email protected] ~]# nl test.txt | sed ‘/cross/d‘          #删除包含cross的行
#若要删除不包含cross的行,用!符号表示取反操作,如‘/cross/! d‘
[[email protected] ~]# sed ‘/^[a-z]/d‘ test.txt           #删除以小写字母开头的行
[[email protected] ~]# sed ‘/\.$/d‘ test.txt              #删除以“ . ”结尾的行
[[email protected] ~]# sed ‘/^$/d‘ test.txt             #删除所有空行

④、替换符合条件的文本:

使用sed命令进行替换操作时需要用到s(字符串替换)、c(整行/整块替换)、y(字符转换)命令选项,常用的语法如下:

centos  7中的文本处理工具sed命令的使用

⑤、迁移符合条件的文本(相当于Windows中的剪切):
H,复制到剪贴板;g、G,将剪切板中的数据覆盖/追加至指定行;w,保存为文件;r,读取指定文件;a,追加指定内容。

centos  7中的文本处理工具sed命令的使用

⑥、使用脚本编辑文件:
使用sed脚本,将多个编辑指令存放到文件中(每行一条编辑指令),通过-f来调用,如:

[[email protected] ~]# sed ‘1,5{H;d};17G‘ test.txt                #将第1~5行内容转移至第17行后
#以上操作可改用脚本文件方式,如下:
[[email protected] ~]# vim opt.list

1,5H
1,5d
17G
[[email protected] ~]# sed -f opt.list test.txt      #使用“-f”选项来调用脚本。

006. 文本处理工具 P2 (常见文本处理工具)

006. 文本处理工具 P2 (常见文本处理工具)

1 常见文本处理工具

cat

  • -E:显示行结束符$
  • -A:显示所有控制符
  • -n:对显示出的每一行进行编号
  • -b:非空行编号
  • -s:压缩连续的空行成一行
    
    [root@localhost ~]# cat a -A
    $
    localhost.localdomain$
    a b c$
     a ^I^I d$
    [root@localhost ~]# cat a -E
    $
    localhost.localdomain$
    a b c$
     a           d$

[root@localhost ~]# cat a -n
1
2 localhost.localdomain
3 a b c
4 a d
[root@localhost ~]# cat a -b




 1  localhost.localdomain
 2  a b c
 3       a           d

 4       c
### nl
相当于cat -b

[root@localhost ~]# nl b
1 a
2 b
3 c
4 b
5 e
6 f






### tac 
逆向显示文本内容

[root@localhost ~]# tac b
f
e
b
c
b
a






### rev
将同一行的内容逆向显示

[root@localhost ~]# echo {1..10} | rev
01 9 8 7 6 5 4 3 2 1


### hexdump
查看非文本文件内容

[root@localhost ~]# hexdump /dev/sda -c -n 512


### od
od 即 dump fifiles in octal and other formats

[root@localhost ~]# echo {a..z} | tr -d '' '' | od -t x1z
0000000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 >abcdefghijklmnop<
0000020 71 72 73 74 75 76 77 78 79 7a 0a >qrstuvwxyz.<
0000033


echo {a..z} | tr -d '' ''|xxd
0000000: 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 abcdefghijklmnop
0000010: 7172 7374 7576 7778 797a 0a             qrstuvwxyz.

### more
可以实现分页查看文件,可以配合管道实现输出信息的分页
### less
less 命令是man命令使用的分页器

### head
可以显示文件或标准输入的前面行
* -c # 指定获取前#字节
* -n # 指定获取前#行
* -# 同上
### tail
tail 和head 相反,查看文件或标准输入的倒数行
* -c # 指定获取后#字节
* -n # 指定获取后#行
* -# 同上
* -f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新建同名
* 文件,将无法继续跟踪文件
* -F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件

tail -f /var/log/messages ###跟踪
tail -fn0 /var/log/messages ### 只看最新发生的日志

### cut

* -d DELIMITER: 指明分隔符,默认tab
* -f FILEDS:
    #: 第#个字段,例如:3
    #,#[,#]:离散的多个字段,例如:1,3,6
    #-#:连续的多个字段, 例如:1-6
    混合使用:1-3,7
* -c 按字符切割
* --output-delimiter=STRING指定输出分隔符

cut -d: -f1,3-5,7 /etc/passwd
[root@localhost ~]# echo {1..10} | cut -d'' '' -f1,3,5-10
1 3 5 6 7 8 9 10

[root@localhost ~]# ifconfig | head -n2 | tail -n1 | cut -d" " -f10
10.0.0.204

[root@localhost ~]# ifconfig | head -n2 | tail -n1 | tr -s " " | cut -d " " -f3
10.0.0.204

[root@localhost ~]# df | tr -s " " | cut -d'' '' -f5 | tr -dc "[0-9\n]"

00
2
0
2
1
14
0





df | tr -s '' '' % |cut -d% -f5 |tr -d ''[:alpha:]''

df | cut -c44-46 |tr -d ''[:alpha:]''

[root@centos8 ~]#cut -d: -f1,3,7 --output-delimiter="---" /etc/passwd
root---0---/bin/bash
bin---1---/sbin/nologin
daemon---2---/sbin/nologin


### paste
paste 合并多个文件同行号的列到一行
* -d 分隔符:指定分隔符,默认用TAB
* -s : 所有行合成一行显示

paste -d":" alpha.log seq.log

paste -s seq.log

paste -s alpha.log seq.log


### wc  
#文本数据统计
* -l 只计数行数
* -w 只计数单词总数
* -c 只计数字节总数
* -m 只计数字符总数
* -L 显示文件中最长行的长度

[root@localhost ~]# wc a
6 7 49 a
[root@localhost ~]# wc -l a
6 a
[root@localhost ~]# cat a | wc -l
6




### sort 
#整理文本
* -r 执行反方向(由上至下)整理
* -R 随机排序
* -n 执行按数字大小整理
* -f 选项忽略(fold)字符串中的字符大小写
* -u 选项(独特,unique),合并重复项,即去重
* -t c 选项使用c做为字段界定符
* -k # 选项按照使用c字符分隔的 # 列来整理能够使用多次

[root@localhost ~]# cut -d: -f1,3 /etc/passwd | sort -t: -k2 -nr | head -n3
def:1001
abc:1000
polkitd:999


[root@localhost ~]# cut -d" " -f1 /var/log/nginx/access_log |sort -u|wc -l
cut: /var/log/nginx/access_log: No such file or directory
0

[root@centos8 ~]#df| tr -s '' '' ''%''|cut -d% -f5|sort -nr|head -1
100

### uniq 去重

uniq命令从输入中删除前后相接的重复的行

* -c: 显示每行重复出现的次数
* -d: 仅显示重复过的行
* -u: 仅显示不曾重复的行

[root@localhost ~]# uniq a1 -c
2 aaaa
2 bbbb
1 ccc
[root@localhost ~]# uniq a1 -d
aaaa
bbbb
[root@localhost ~]# uniq a1 -u
ccc
[root@localhost ~]# sort a1 | uniq -c
2 aaaa
2 bbbb
1 ccc
2 ddd
[root@localhost ~]# ss -nt |tail -n+2 | tr -s '' ''| cut -d" " -f4 | cut -d: -f1 | uniq -c
2 10.0.0.204














cut -d" " -f1 access_log |sort |uniq -c|sort -nr |head -3

lastb -f btmp-34 | tr -s '' '' |cut -d '' '' -f3|sort |uniq -c
|sort -nr | head -3


### diff和patch 
diffff 命令比较两个文件之间的区别

### patch
复制在其它文件中进行的改变**(要谨慎使用)**
适用 -b 选项来自动备份改变了的文件

### cmp

[root@localhost ~]# cmp /usr/bin/dir /usr/bin/ls
/usr/bin/dir /usr/bin/ls differ: byte 645, line 1


# 练习
1、找出ifconfifig “网卡名” 命令结果中本机的IPv4地址

[root@localhost ~]# ifconfig | head -n2 | tail -n1 | tr -s '' ''| cut -d'' '' -f3
10.0.0.204

2、查出分区空间使用率的最大百分比值

[root@localhost ~]# df | tr -s '' '' | tr -d % | cut -d'' '' -f5 | tr -d ''[:alpha:]'' | sort -nr | head -n1
14

3、查出用户UID最大值的用户名、UID及shell类型

cut -d: -f3,1,7 /etc/passwd | sort -t: -nr -k2

4、查出/tmp的权限,以数字方式显示

[root@localhost ~]# stat /tmp | head -n4 | tail -n1 | cut -d: -f2 | cut -d/ -f1 | cut -d''('' -f2
1777

5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

[root@localhost ~]# netstat -t | grep "ssh " | tr -s " " | cut -d'' '' -f5 | cut -d: -f1 | uniq -c | sort -nr
2 10.0.0.1

centos 7 scp命令的使用

centos 7 scp命令的使用

scp命令 : scp就是secure copy ,用于将文件或者目录从一个Linux系统拷贝到另一个linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。
格式: scp 远程用户名@ip地址:文件的绝对路径 本地Linux系统路径 (从远程主机拉取文件)
scp 本地linux系统文件路径 远程用户名@ip地址:远程系统文件绝对路径名 (像远程主机推送文件)

            例: # scp  /home/ixdba/etc.tar.gz  root@192.168.3.60:/tmp(当报错 "not a regular file";可加参数 -r 解决,当拉取或推送的是目录时需加 -r 参数);
                    #scp  root@192.168.3.60:/home/ixdba/etc.tar.gz  /tmp
                    #scp -r  /etc  root@192.168.3.60:/opt
                    使用 -P参数可跟端口号,指定远程连接的端口号。

CentOS 7系统远程会话管理工具screen怎么安装使用?

CentOS 7系统远程会话管理工具screen怎么安装使用?

可能大家会遇到这样的问题:使用 SSH 或者telent 远程登录到Linux 服务器,运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,如果因为,网络异常或其它因素导致突然断开连接,远程命令也会停止,只能重新连接后再运行,一切半途而废了。这里我就教大家如何使用screen命令,避免出现以上问题。

Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。用户可以在一个screen会话中创建多个screen子会话,在每一个screen会话(或子会话)中就像操作一个真实的telnet/SSH连接窗口。

安装screen

1、使用putty或类似的SSH工具登录CentOS 7服务器;直接输入screen看提示“bash : screen: 未找到命令…”;检车系统有没有安装screen;

2、如果你的CentOS系统没有自带screen,安装方法如下:

yum install screen

安装成功后,输入screen会切换到另一个窗口,可以通过ctrl+a+d切换回原来的命令行界面;

创建screen会话

情景:需要在CentOS 7中下载并安装LNMP一键安装包;

1、先执行以下命令screen -S shapolang以上命令的意思是:新建screen会话,名字为shapolang。

2、开始安装lnmp,

a、执行 wget –no-check-certificate https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz下载安装包。

b、执行:tar -xvf lnmp1.2-full.tar.gz 解压。

c、执行:cd lnmp1.2-full /进入lnmp1.2目录。

d、执行:./install.sh 进行安装。

如果网络掉线,可以重新连接,再执行 screen -r shapolang就会看到你的shapolang安装进程。

暂时离开screen会话

(但保留screen里运行的LNMP一键安装包命令)

在SSH窗口中按快捷键:Ctrl+a d(按住Ctrl,依次按a,再按d)即可退出名叫shapolang的screen的会话。

暂时离开screen会话时,screen的会话并不会因为离开而停止,正在运行中(如编译LNMP一键安装包)的进程依然会继续运行,screen的好处就是可以在同一个ssh窗口中执行多个任务,如再新开一个screen会话安装gitlab。也可以临时关闭ssh窗口,做些其它事情。

重新读取screen会话

在SSH中执行以上命令即可读取,若忘记之前创建的screen会话的名字或者之前创建时候存在多个相同名称的会话,可以通过下面命令查询正在运行中的screen会话列表信息。

screen -ls

1、通过screen名字(如之前新建的shapolang)读取。

screen -r shapolang

如果存在多个同名名的会在会话名之前有会话ID+会话名称,如4054.shapolang;

可以通过screen -r 4054.shapolang或者screen -r 4054获取指定会话(建议使用后一种,第一种比较复杂)

关闭screen会话

若不再需要当前的screen会话,可以在当前的screen会话中执行 exit,提示[screen is terminating]表示已经成功关闭screen会话(不会保留在内存中),如果需要,请重建。

screen的快捷键

如之前讲到的Ctrl + a d 可以暂时离开当前的screen会话,同时screen还提供其它的快捷键。

Ctrl + a c :在当前screen会话中创建一个子会话

Ctrl + a p :上一个子会话

Ctrl + a n :下一个子会话

注意事项:

操作非常简单,不过最好不要创建太多同名会话的自己都分不清楚,毕竟回话ID不直观。

Centos7 Shell编程之正则表达式、文本处理工具详解

Centos7 Shell编程之正则表达式、文本处理工具详解

1. 正则表达式

正则表达式可以很灵活的提供各种模糊匹配的筛选规则。常被用来检索、替换那些符合某个模式的文本。grep、sed、awk等文本处理工具都支持通过正则表达式进行模式匹配

1.1 常规匹配

一串不包含特殊字符的正则表达式,匹配包含它自己的字符,例如:

[root@bigdata001 ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bigdata001 ~]# 

1.2 常用特殊字符

特殊字符:^:匹配一行的开头,例如:

[root@bigdata001 ~]# cat /etc/passwd | grep ^root
root:x:0:0:root:/root:/bin/bash
[root@bigdata001 ~]# 

特殊字符:$:匹配一行的结束,例如:

[root@bigdata001 ~]# cat /etc/passwd | grep bash$
root:x:0:0:root:/root:/bin/bash
[root@bigdata001 ~]#

特殊字符:.:匹配一个任意的字符,例如:

[root@bigdata001 ~]# cat /etc/passwd | grep r..t
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@bigdata001 ~]#

特殊字符:*:不单独使用,和上一个字符连用,表示匹配上一个字符0次或多次,例如

[root@bigdata001 ~]# cat /etc/passwd | grep ro*t
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bigdata001 ~]#

字符区间:[ ]:表示匹配某个范围内的一个字符

  • [68]:匹配6或者8
  • [0-9]:匹配一个0-9的数字
  • [0-9]*:匹配任意长度的数字字符串
  • [a-z]:匹配一个a-z之间的字符
  • [a-c, e-f]-匹配a-c或者e-f之间的任意一个字符
[root@bigdata001 ~]# echo 12345 | grep "[0-9]*"
12345
[root@bigdata001 ~]#

**特殊字符:**:表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配某一特殊字符本身时(例如我想找出所有包含’$''的行),就会碰到困难。此时我们就要将转义字符和特殊字符连用,来表示特殊字符本身,例如:

[root@bigdata001 ~]# echo -e ''abc$def''"\n123456" | grep ''\$''
abc$def
[root@bigdata001 ~]#

实战练习

[root@bigdata001 ~]# echo 13667894536 | grep -E ^1[34578][0-9]{9}$
13667894536
[root@bigdata001 ~]#

grep默认是不支持正则特殊字符{}的,需要开启拓展正则表达式功能

2. 文本处理工具

2.1 cut

cut可以将文件中内容(也可以通过管道符传输),按照指定分隔符将每一行进行切割,然后取指定字节、字符、字段进行输出

基本语法: cut [选项参数] filename

选项参数如下:

-d 分隔符:按照指定分隔符分割每行数据,默认是制表符\t

-f 列号:取第几列。可以使用3,5表示取第三列和第五列,-33-55-分布表示取前三列、第三列到第五列、第五列和后面所有列

-c 字符号:表示取第个字符。不能指定分隔符

-b 字节号:表示取第个字节。不能指定分隔符

示例:

[root@bigdata001 ~]# cat /etc/passwd | grep bash$ | cut -d ":" -f 1
root
bigdata
[root@bigdata001 ~]# 
[root@bigdata001 ~]# cat /etc/passwd | grep bash$ | cut -d ":" -f 6-
/root:/bin/bash
/home/bigdata:/bin/bash
[root@bigdata001 ~]#
[root@bigdata001 ~]# cat /etc/passwd | grep bash$ | cut -c 1
r
g
[root@bigdata001 ~]# 

实战示例:

[root@bigdata001 ~]# ifconfig ens33 | grep netmask | cut -d " " -f 10
192.168.8.111
[root@bigdata001 ~]# 

2.2 awk

awk把文件逐行的读入(文件名或通过管道符传输),以空格为默认分隔符将每行切片,切开的部分再进行分析处理

基本语法:awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2} …’ filename

  • pattern:表示awk在数据中查找的内容,就是正则表达式匹配
  • action:在找到匹配内容时所执行的一系列命令

选项参数说明

  • -F 分隔符:指定输入文件每行分隔符
  • -v 变量名=变量值:赋值一个用户定义变量

awk的内置变量

FILENAME:文件名NR:数据所在的行号NF:每行切割后的列数

示例1:

[root@bigdata001 ~]# cat /etc/passwd | grep bash$
root:x:0:0:root:/root:/bin/bash
bigdata:x:996:1000::/home/bigdata:/bin/bash
[root@bigdata001 ~]# 
[root@bigdata001 ~]# awk -F ":" -v my_var=1 ''BEGIN{print "begin line"} /bash$/{print $3+my_var", "$1", 文件名: "FILENAME", 行号: "NR",  列数: "NF} END{print "end line"}'' /etc/passwd
begin line
1, root, 文件名: /etc/passwd, 行号: 1, 列数: 7
997, gpadmin, 文件名: /etc/passwd, 行号: 22, 列数: 7
end line
[root@bigdata001 ~]#
  • BEGIN和END都是可选的,表示在所有数据行读取之前或之后执行的操作
  • 可以不定义pattern,只定义action
  • print是awk内部的命令
  • $1表示第一列,$2表示第二列,依次类推

示例2:

[root@bigdata001 ~]# ifconfig | awk ''/netmask/{print $2}''
192.168.8.111
127.0.0.1
[root@bigdata001 ~]#

前面的多个空格会当作一个空格,且只统计有内容的列所在的位置

示例3:

[root@bigdata001 ~]# cat test.awk
#!/bin/awk -f
# 在所有数据行读取之前的操作
BEGIN {
    # 定义变量
    math = 0
    english = 0
 
    printf "name         math   english   total\n"
}

# 对每行数据进行的操作
{
    math+=$2
    english+=$3
    printf "%-10s %6d %9d %7d\n", $1, $2, $3, $2+$3
}
# 在所有数据行读取之后的操作
END {
    printf "total:     %6d %9d\n", math, english
    printf "average:   %6.2f %9.2f\n", math/NR, english/NR
}
[root@bigdata001 ~]# 
[root@bigdata001 ~]# echo -e "zhang_san 60 80\nli_si 70 90" | awk -f test.awk
name         math   english   total
zhang_san      60        80     140
li_si          70        90     160
total:        130       170
average:    65.00     85.00
[root@bigdata001 ~]# 
  • printf是wak内置命令
  • printf中-表示左对齐,默认右对齐。数字表示宽度。s表示字符串,d表示数字,f表示浮点数(数字1.数字2:数字1表示宽度,数字2表示小数点位数)

到此这篇关于Centos7 Shell编程之正则表达式、文本处理工具的文章就介绍到这了,更多相关正则表达式、文本处理工具内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • shell脚本中的正则表达式详解
  • shell高级学习之正则表达式
  • shell脚本之正则表达式、grep、sed、awk
  • Shell脚本学习指南之文本处理工具

今天的关于centos 7中的文本处理工具sed命令的使用centos7文本编辑命令的分享已经结束,谢谢您的关注,如果想了解更多关于006. 文本处理工具 P2 (常见文本处理工具)、centos 7 scp命令的使用、CentOS 7系统远程会话管理工具screen怎么安装使用?、Centos7 Shell编程之正则表达式、文本处理工具详解的相关知识,请在本站进行查询。

本文标签: