Shell中的色彩处理

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e
格式1: echo -e “\033[背景颜色;文字颜色m 要输出的字符 \033[0m”
格式2:echo -e “\e[背景颜色;文字颜色m要输出的字符\e[0m”
例:绿底蓝字
[root@localhost ~]# echo -e “\033[42;34m hello world\033[0m”
hello world
[root@localhost ~]# echo -e “\e[42;34m hello world\e[0m”
hello world

注:其中42的位置代表底色,34的位置代表的是字的颜色,0m是清除所有格式
  1、字背景颜色和文字颜色之间是英文的分号";"
  2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
4、echo显示带颜色,需要使用参数-e ,-e 允许对下面列出的加反斜线转义的字符进行解释.

控制选项:
\033[0m 关闭所有属性
\033[1m 设置高亮度,加粗
\033[5m 闪烁

[root@localhost ~]# echo -e "\e[42;34m hello world\e[0m"hello world
[root@localhost ~]# echo -e "\e[42;34m hello world\e[5m"   #执行后,发现后期所有输出都闪烁状态hello world
[root@localhost ~]# echo -e "\e[42;34m hello world\e[0m"    #可以使用\033[0m 关闭所有属性hello world
[root@localhost ~]# echo -e "\e[42;34m hello world\e[0m"hello world
[root@localhost ~]# echo -e "\e[42;34m hello world\e[1m"

常见shell输入带颜色文字: 3x代表字的颜色,4x代表背景色

echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"

awk基本应用

grep和egrep:文本过滤的
sed:流编辑器,实现编辑的
awk:文本报告生成器,实现格式化文本输出

概念

AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk命名:Alfred Aho Peter 、Weinberger和brian kernighan三个人的姓的缩写。
awk---->gawk 即: gun awk
在linux上常用的是gawk,awk是gawk的链接文件
man gawk----》pattern scanning and processing language 模式扫描和处理语言。
pattern [ˈpætn] 模式 ; process [ˈprəʊses] 处理
任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和触发时间。
模式:
正则表达式 : /root/ 匹配含有root的行 /*.root/
关系表达式: < > && || + *
匹配表达式: ~ !~
动作:
变量 命令 内置函数 流控制语句
它的语法结构如下:
awk [options] ‘BEGIN{ print “start” } ‘pattern{ commands }’ END{ print “end” }’ file
其中:BEGIN END是AWK的关键字部,因此必须大写;这两个部分开始块和结束块是可选的

特殊模块:
BEGIN语句设置计数和打印头部信息,在任何动作之前进行
END语句输出统计结果,在完成动作之后执行

通过上面我们可以知道;AWK它工作通过三个步骤
1、读:从文件、管道或标准输入中读入一行然后把它存放到内存中
2、执行:对每一行数据,根据AWK命令按顺序执行。默认情况是处理每一行数据,也可以指定模式
3、重复:一直重复上述两个过程直到文件结束
AWK支持两种不同类型的变量:内建变量,自定义变量
awk内置变量(预定义变量)
$n 当前记录的第n个字段,比如: $1表示第一个字段,$2表示第二个字段
$0 这个变量包含执行过程中当前行的文本内容
FILENAME 当前输入文件的名
FS 字段分隔符(默认是空格)
NF 表示字段数,在执行过程中对应于当前的字段数,NF:列的个数
FNR 各文件分别计数的行号
NR 表示记录数,在执行过程中对应于当前的行号
OFS 输出字段分隔符(默认值是一个空格)
ORS 输出记录分隔符(默认值是一个换行符)
RS 记录分隔符(默认是一个换行符)

常用的命令选项:
-F fs指定分隔符
-v 赋值一个用户自定义变量
-f 指定脚本文件,从脚本中读取awk命令
(1)分隔符的使用
用法:-Ffs 其中fs是指定输入分隔符,fs可以是字符串或正则表达式;分隔符默认是空格
常见写法:-F: -F, -F[Aa]

[root@localhost ~]# echo "AA BB CC DD"|awk '{print $2}'
BB
[root@localhost ~]# echo "AA|BB|CC|DD"|awk -F"|" '{print $2}'
BB
[root@localhost ~]#  echo "AA,BB,CC,DD"|awk -F"," '{print $2}'
BB
[root@localhost ~]# echo "AA,BB,CC,DD"|awk -F, '{print $2}'
BB
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
alon
tcpdump
apache

指定多个分隔符

[root@localhost ~]# echo "12AxAbADXaAD52" | awk -F"[aA]" '{print $6}'
D52

使用FS指定分隔符

[root@localhost ~]# echo "12AxAbADXaAD52" | awk 'BEGIN {FS="aA"} {print $2}'
D52

[

root@localhost ~]# ifconfig ens33 | grep netmaskinet 10.10.100.144  netmask 255.255.255.0  broadcast 10.10.100.255
[root@localhost ~]# ifconfig ens33 | grep netmask | awk '{print $2}'
10.10.100.144

关系运算符的使用

[root@localhost ~]# echo "one two three four" | awk '{print $4}'
four
[root@localhost ~]# echo "one two three four" | awk '{print $NF}'
four
[root@localhost ~]# echo "one two three four" | awk '{print $(NF-2)}'
two
[root@localhost ~]# echo "one two three four" | awk '{print $(NF/2-1)}'
one

打印出passwd文件中用户UID小于10的用户名和它登录使用的shell
参数: $NF 最后一列

[root@localhost ~]# awk -F: '$3<10{print $1 $NF}' /etc/passwd     #直接输出格式太乱
root/bin/bash
bin/sbin/nologin
daemon/sbin/nologin
adm/sbin/nologin
lp/sbin/nologin
sync/bin/sync
shutdown/sbin/shutdown
halt/sbin/halt
mail/sbin/nologin
[root@localhost ~]# awk -F: '$3<10{print $1 "<======>" $NF}' /etc/passwd   #awk格式化输出
root<======>/bin/bash
bin<======>/sbin/nologin
daemon<======>/sbin/nologin
adm<======>/sbin/nologin
lp<======>/sbin/nologin
sync<======>/bin/sync
shutdown<======>/sbin/shutdown
halt<======>/sbin/halt
mail<======>/sbin/nologin
[root@localhost ~]# awk -F: '$3<10{print $1"\t"$NF}' /etc/passwd
root    /bin/bash
bin /sbin/nologin
daemon  /sbin/nologin
adm /sbin/nologin
lp  /sbin/nologin
sync    /bin/sync
shutdown    /sbin/shutdown
halt    /sbin/halt
mail    /sbin/nologin

注:awk 最外面使用了单引号’’ ,里面都使用双引号“”
.输出多个列时,可以加,分隔一下.

[root@localhost ~]# awk -F: '$3<10{print $1,$NF}' /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin

打印出系统中UID大于1000且登录shell是/bin/bash的用户

[root@localhost ~]# awk -F: '$3>=1000 && $NF=="/bin/bash"{print $1"\t"$NF}' /etc/passwd
alon    /bin/bash

在脚本中的一些应用
统计当前内存的使用率

[root@localhost ~]# cat cache.sh
#!/bin/bash
echo "当前系统内存使用百分比为:"
USEFREE=`free -m | grep -i mem | awk '{print $3/$2*100"%"}'`
echo -e "内存使用百分比: \e[31m${USEFREE}\e[0m"
[root@localhost ~]# bash cache.sh
当前系统内存使用百分比为:
内存使用百分比: 22.8805%

awk高级应用

命令格式:
awk [-F | -f | -v ] ‘BEGIN {} / / {command1;command2} END {}’file

    -F       指定分隔符-f     调用脚本-v      定义变量‘{}’    引用代码块{…}        命令代码块,包含一条或多条命令BEGIN 初始化代码块/ str /       匹配代码块,可以是字符串或正则表达式{print A;print B}       多条命令使用分号分隔END       结尾代码块

在awk中,pattern有以下几种:
1)empty空模式,这个也是我们常用的
2)/regular expression/ 仅处理能够被这个模式匹配到的行

打印以root开头的行

[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

行范围匹配 startline,endline

输出行号大于等于3且行号小于等于6的行

[root@localhost ~]# awk -F: '(NR>=3&&NR<=6){print NR,$0}' /etc/passwd
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
内置变量的特殊用法:
√   $0       表示整个当前行
√   NF     字段数量    NF(Number 数量 ;  field 字段)
√   NR      每行的记录号,多文件记录递增   Record [ˈrekɔ:d]
√   \t        制表符
√   \n      换行符
√    ~        匹配
√   !~      不匹配
√   -F'[:#/]+'  定义三个分隔符

使用NR行号来定位,然后提取IP地址

[root@localhost ~]#  ifconfig ens33 | awk -F " " 'NR==2{print $2} '
10.10.100.144

注:NR==2表示行号

NR与FNR的区别

[root@localhost ~]# awk '{print NR"\t" $0}' /etc/hosts /etc/hostname
1   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
2   ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
3   10.10.100.144 test.com
4   10.10.100.145 test.com
5   10.10.100.146 test.com
6   localhost.localdomain
[root@localhost ~]# awk '{print FNR"\t" $0}' /etc/hosts /etc/hostname
1   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
2   ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
3   10.10.100.144 test.com
4   10.10.100.145 test.com
5   10.10.100.146 test.com
1   localhost.localdomain

注:对于NR来说,在读取不同的文件时,NR是一直加的 ;
对于FNR来说,在读取不同的文件时,它读取下一个文件时,FNR会从1开始重新计算的

使用3种方法去除首行

[root@localhost ~]# route -n | grep -v ^Kernel
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.100.1     0.0.0.0         UG    100    0        0 ens33
10.10.100.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@localhost ~]# route -n | sed 1d
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.100.1     0.0.0.0         UG    100    0        0 ens33
10.10.100.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@localhost ~]# route -n | awk 'NR!=1 {print $0}'
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.100.1     0.0.0.0         UG    100    0        0 ens33
10.10.100.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

匹配,使用awk查出以包括root字符的行 , 有以下3种方法

[root@localhost ~]#  awk -F: "/root/{print}" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# awk -F: "/root/" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#  awk -F: '/root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

做一个不匹配root行:

[root@localhost ~]# awk -F: '!/root/{print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
alon:x:1000:1000::/home/alon:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

以root开头的行

[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

以bash结尾的行

[root@localhost ~]# awk -F: '/bash$/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
alon:x:1000:1000::/home/alon:/bin/bash

条件表达式
表达式?if-true:if-false 问号前面是条件,如果条件为真执行if-true,为假执行if-false
如果passwd中UID小于10,则给变量USER赋值成aaa,否则赋值成bbb

[root@localhost ~]# awk -F: '{$3<10? USER="aaa":USER="bbb";print $1,USER}' /etc/passwd
root aaa
bin aaa
daemon aaa
adm aaa
lp aaa
sync aaa
shutdown aaa
halt aaa
mail aaa
operator bbb
games bbb
ftp bbb
nobody bbb
systemd-network bbb
dbus bbb
polkitd bbb
sshd bbb
postfix bbb
chrony bbb
alon bbb
tcpdump bbb
apache bbb
mysql bbb

用if(条件){命令1;命令2}elif(条件){命令;}else{命令}中,在比较条件中用( )扩起来,在AWK中,如果条件为1为真,0为假
如果UID大于10 ,则输出user=>用户名,否则输出pass=>用户名

[root@localhost ~]# awk -F: '{if($3<10){print "user=>"$1}else{print "pass=>"$1}}' /etc/passwd
user=>root
user=>bin
user=>daemon
user=>adm
user=>lp
user=>sync
user=>shutdown
user=>halt
user=>mail
pass=>operator
pass=>games
pass=>ftp
pass=>nobody
pass=>systemd-network
pass=>dbus
pass=>polkitd
pass=>sshd
pass=>postfix
pass=>chrony
pass=>alon
pass=>tcpdump
pass=>apache
pass=>mysql

~ 匹配
!~ 不匹配

查出行号小于等于5且包括bin/bash的行

[root@localhost ~]# awk -F: '{if($3<=5 && $NF ~ "bin/bash"){print $1,$NF}}' /etc/passwd
root /bin/bash

变量

1)用-v指定 var=value 变量名区分大小写的
2)在程序中直接定义
3)在awk里,使用变量不用加$符号。

[root@localhost ~]# var="test"
[root@localhost ~]# awk 'BEGIN{print "'$var'"}'            #引用变量时,使用单引号+双引号括起来
test

格式化输出

printf命令:格式化输出 printf “FORMAT”,item1,item2…
format使用注意事项:
1、其与print命令的最大不同是,printf需要指定format样式
2、format用于指定后面的每个item的输出格式
3、printf语句不会自动打印换行符;\n
4、format格式的指示符都以%开头,后跟一个字符;如下:
%c: 显示字符的ASCII码
%d, %i:十进制整数
%e, %E:科学计数法显示数值
%f: 显示浮点数
%g, %G: 以科学计数法的格式或浮点数的格式显示数值;
%s: 显示字符串
%u: 无符号整数
%%: 显示%自身

输入passwd文件中的第1列内容,输出时不会换行

[root@localhost ~]# awk -F: '{printf "%s",$1}' /etc/passwd   ##不会自动换行
rootbindaemonadmlpsyncshutdownhaltmailoperatorgamesftpnobodysystemd-networkdbuspolkitdsshdpostfixchronyalontcpdumpapachemysql
[root@localhost ~]#

换行输出

[root@localhost ~]# awk -F: '{printf "%s\n",$1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
alon
tcpdump
apache
mysql

在输出的字母前面添加自定义字符串USERNAME:

[root@localhost ~]# awk -F: '{printf "USERNAME: %s\n",$1}' /etc/passwd
USERNAME: root
USERNAME: bin
USERNAME: daemon
USERNAME: adm
USERNAME: lp
USERNAME: sync
USERNAME: shutdown
USERNAME: halt
USERNAME: mail
USERNAME: operator
USERNAME: games
USERNAME: ftp
USERNAME: nobody
USERNAME: systemd-network
USERNAME: dbus
USERNAME: polkitd
USERNAME: sshd
USERNAME: postfix
USERNAME: chrony
USERNAME: alon
USERNAME: tcpdump
USERNAME: apache
USERNAME: mysql

对1和1和1和NF都做格式化输出

[root@localhost ~]# awk -F: '{printf "USERNAME: %s %s\n",$1,$NF}' /etc/passwd
.USERNAME: root /bin/bash
USERNAME: bin /sbin/nologin
USERNAME: daemon /sbin/nologin
USERNAME: adm /sbin/nologin
USERNAME: lp /sbin/nologin
USERNAME: sync /bin/sync
USERNAME: shutdown /sbin/shutdown
USERNAME: halt /sbin/halt
USERNAME: mail /sbin/nologin
USERNAME: operator /sbin/nologin
USERNAME: games /sbin/nologin
USERNAME: ftp /sbin/nologin
USERNAME: nobody /sbin/nologin
USERNAME: systemd-network /sbin/nologin
USERNAME: dbus /sbin/nologin
USERNAME: polkitd /sbin/nologin
USERNAME: sshd /sbin/nologin
USERNAME: postfix /sbin/nologin
USERNAME: chrony /sbin/nologin
USERNAME: alon /bin/bash
USERNAME: tcpdump /sbin/nologin
USERNAME: apache /sbin/nologin
USERNAME: mysql /sbin/nologin

*对1和1和1和NF都做格式化输出,在1和1和1和NF两者之间添加一串====字符进行输入*

[root@localhost ~]# awk -F: '{printf "USERNAME: %s=========%s\n",$1,$NF}' /etc/passwd
USERNAME: root=========/bin/bash
USERNAME: bin=========/sbin/nologin
USERNAME: daemon=========/sbin/nologin
USERNAME: adm=========/sbin/nologin
USERNAME: lp=========/sbin/nologin
USERNAME: sync=========/bin/sync
USERNAME: shutdown=========/sbin/shutdown
USERNAME: halt=========/sbin/halt
USERNAME: mail=========/sbin/nologin
USERNAME: operator=========/sbin/nologin
USERNAME: games=========/sbin/nologin
USERNAME: ftp=========/sbin/nologin
USERNAME: nobody=========/sbin/nologin
USERNAME: systemd-network=========/sbin/nologin
USERNAME: dbus=========/sbin/nologin
USERNAME: polkitd=========/sbin/nologin
USERNAME: sshd=========/sbin/nologin
USERNAME: postfix=========/sbin/nologin
USERNAME: chrony=========/sbin/nologin
USERNAME: alon=========/bin/bash
USERNAME: tcpdump=========/sbin/nologin
USERNAME: apache=========/sbin/nologin
USERNAME: mysql=========/sbin/nologin

awk修饰符:
N: 显示宽度;
-: 左对齐;
一个字母占一个宽度。默认是右对齐

显示时用10个字符串右对齐显示。如果要显示的字符串不够10个宽度,以字符串的左边自动添加。一个字母占一个宽度。默认是右对齐

[root@localhost ~]# awk -F":" '{printf "%10s\n",$1}'  /etc/passwdrootbindaemonadmlpsyncshutdownhaltmailoperatorgamesftpnobody
systemd-networkdbuspolkitdsshdpostfixchronyalontcpdumpapachemysql

使用10个宽度,左对齐显示

[root@localhost ~]# awk -F":" '{printf "%-10s\n",$1}'  /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
chrony
alon
tcpdump
apache
mysql

第1列使用15个字符宽度左对齐输出,最后一列使用15个字符宽度右对齐输出

[root@localhost ~]# awk -F: '{printf "USERNAME: %-15s %15s\n",$1,$NF}' /etc/passwd
USERNAME: root                  /bin/bash
USERNAME: bin               /sbin/nologin
USERNAME: daemon            /sbin/nologin
USERNAME: adm               /sbin/nologin
USERNAME: lp                /sbin/nologin
USERNAME: sync                  /bin/sync
USERNAME: shutdown         /sbin/shutdown
USERNAME: halt                 /sbin/halt
USERNAME: mail              /sbin/nologin
USERNAME: operator          /sbin/nologin
USERNAME: games             /sbin/nologin
USERNAME: ftp               /sbin/nologin
USERNAME: nobody            /sbin/nologin
USERNAME: systemd-network   /sbin/nologin
USERNAME: dbus              /sbin/nologin
USERNAME: polkitd           /sbin/nologin
USERNAME: sshd              /sbin/nologin
USERNAME: postfix           /sbin/nologin
USERNAME: chrony            /sbin/nologin
USERNAME: alon                  /bin/bash
USERNAME: tcpdump           /sbin/nologin
USERNAME: apache            /sbin/nologin
USERNAME: mysql             /sbin/nologin

使用开始和结束模块来格式化输出

[root@localhost ~]# cat test.awk
BEGIN{print "UserId\t\t\tShell"print "-------------------------------"FS=":"}
$3>=500 && $NF=="/sbin/nologin"{printf "%-20s %-20s\n", $1,$NF    }
END{print "--------------------------------"}[root@localhost ~]# awk -f test.awk /etc/passwd
UserId          Shell
-------------------------------
polkitd              /sbin/nologin
chrony               /sbin/nologin
--------------------------------

shell脚本实战

检查服务器是否受到DDOS攻击脚本
思路:通过:netstat 查看网络连接数。如果一个IP地址对服务器建立很多连接数(比如一分钟产生了100个连接),就认为发生了DDOS
搭建环境

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -ntlp |grep httpd
tcp6 0 0 :::80 ::

shell中色彩处理和三剑客之awk使用技巧相关推荐

  1. awk 内嵌正则 提取字符串_干货-Shell编程文本处理三剑客之-awk

    awk 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂 ...

  2. shell 中一个进制转换的小技巧

    root@fetmx6ull-s:~# echo $(( 2#0000101 )) 5 root@fetmx6ull-s:~# echo $(( 8#0000101 )) 65 root@fetmx6 ...

  3. shell编程系列15--文本处理三剑客之awk格式化输出printf

    shell编程系列15--文本处理三剑客之awk格式化输出printfprintf的格式说明符格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o 打印 ...

  4. shell编程系列20--文本处理三剑客之awk常用选项

    shell编程系列20--文本处理三剑客之awk常用选项awk选项总结选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号[root@localhost shel ...

  5. Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK

    目录 一.shell数组 1.数组分类 2.定义数组方法 二.正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 三.文本三剑客之AWK 1.awk 2.使用格式 3.处 ...

  6. shell中join链接多个域_Linux Shell中使用awk完成两个文件的关联Join

    Shell中的awk命令是非常强大的,有很多书籍专门介绍awk的.本文介绍的只是其中很小的一个点,使用awk命令完成两个文件的关联join. 先看看awk中的两个自身变量,NR和FNR. awk可以指 ...

  7. shell中awk,find,grep学习

    在shell中运用awk,grep,find更多的时候是在对于文本进行操作.其中grep以及find相对好理解,grep结合固定的语法实现对文件中关键词的查找,其应用对象是文本: grep " ...

  8. shell中的流编辑器awk

    shell中的流编辑器awk 文章目录 shell中的流编辑器awk awk命令 awk工作原理 awk的命令格式 awk常见的内建变量(可直接使用) awk按行输出文本 awk以字段输出文本 awk ...

  9. Linux文本三剑客之一——awk详解(1)——awk看这两篇就够啦~PS:文末有练习,来练练手吧

    shell编程三剑客 grep --> egrep --> 文本过滤 查询 awk 文本截取 sed  文本的替换和修改 目录 awk awk也可以做小数运算 awk命令简要处理流程 aw ...

最新文章

  1. 有上下界网络流 ---- Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流
  2. datePicker在fullscreen下不弹出
  3. Centos7之Gcc安装
  4. 微信公众平台“自定义回复”技巧
  5. Python 使用标准库根据进程名获取进程PID
  6. Apache JMeter 5.1.1 发布,压力测试工具
  7. 程序员的自我修养(雾)
  8. 两招快速教会你们PDF怎么转图片jpg格式
  9. 创建jsp文件时报8080端口被占用,解决办法
  10. git rebase详解(图解+最简单示例,一次就懂)
  11. JPG插入GPS信息
  12. 自然语言处理NLP面试问题
  13. 计算机CPU指令的32位、64位是如何区分呢?
  14. Android重定向,还原短链接为长链接
  15. PLC编程实例及经验设计法详解
  16. IP通信中音频编解码技术与抗丢包技术概要
  17. 派网AX50C设备上线做VPN服务器
  18. Z-Score归一化方法
  19. 《周期》一本价值投资方法论的好书
  20. 图形推理1000题pdf_图形推理的复习流程

热门文章

  1. php读取文件名称,php如何获取文件名
  2. 手机游戏直播 : 悟空TV客户端设计与技术难点
  3. 搞清楚字符编码06-万国码[2]
  4. 多网口设备使用ping时的默认出口
  5. jQuery移除或禁用html元素点击事件常用方法
  6. 百度网盘没会员,下载速度也可以达到开会员的速度
  7. 在Mac上安装 openshift origin 3.6.0 新版本 oc 版本oc v3.9.0+191fece
  8. SEO工程师经验谈面试的一些应对方案
  9. 求10000阶乘的结果后面有多少个0详解
  10. 海康android sdk联外网,海康网络摄像机SDK对接