合肥网站建设司图,廊坊专业网站网站,企业网站建设 哪个公司做得好,做网站能赚吗目录
一、grep
1、参数#xff1a;
2、示例#xff1a;
3、grep 正则匹配示例
二、sed
示例#xff1a;
三、awk
一、语法#xff1a;
二、常用参数 三、示例
四、条件与循环语句
五、awk调用函数 1、grep#xff1a;过滤文本#xff0c;过滤出文本中符合要求…目录
一、grep
1、参数
2、示例
3、grep 正则匹配示例
二、sed
示例
三、awk
一、语法
二、常用参数 三、示例
四、条件与循环语句
五、awk调用函数 1、grep过滤文本过滤出文本中符合要求的行
2、sed修改文本对文本中的行增删改查
3、awk处理文本文本中的行和列进行处理
grep 经常与sed、awk合用
grep、sed、awk、经常与sort、uniq、wc等命令一起使用
文本三剑客支持正则表达式因此学习之前建议先学一下正则表达式
一、grep 作用文本搜索工具根据用户指定的“模式过滤条件)”对目标文本逐行进行匹配检查打印匹配到的行。
1、参数
-i:忽略大小写
-n:显示行号
-c:显示行数
-e:支持基础的正则表达式 多条件过滤 or and
-E:支持扩展的
-v:反转查找输出与模式不相符的行
-r:递归搜索所有文件
-d:过滤文件
-o:只显示匹配的内容
-A: 找到匹配行以及后几行 比如-A2后两行-A5后5行
-B:输出匹配行以及前几行 比如-B2前两行 -B5前5行
-C:既要显示前几行 又要显示后几行 比如-C5当前行的前后5行
-a:不要忽略二进制数据
-l:列出所包含的文件
-L:列出不包含的文件
2、示例
[rootk8s-lb-backup tmp]# cat grepdemo.txt
hello word
Hi wuz\haobo
hello hahaha hehehe
L%alala
123/45/61、过滤 h 开头的行忽略大小写-i、显示行号 -n[rootk8s-lb-backup tmp]# grep ^h -i -n grepdemo.txt 1:hello word2:Hi wuzhaobo3:hello hahaha hehehe2、使用正则表达式的转义字符过滤有双引号的行使用单引号 或者转义符 \ 或者使用 -F[rootk8s-lb-backup tmp]# grep grepdemo.txt hello hahaha hehehe[rootk8s-lb-backup tmp]# grep \ grepdemo.txt hello hahaha hehehe[rootk8s-lb-backup tmp]# grep / grepdemo.txt 123/45/6[rootk8s-lb-backup tmp]# grep \\ grepdemo.txt Hi wuz\haobo[rootk8s-lb-backup tmp]# grep -F z\h grepdemo.txt Hi wuz\haobo[rootk8s-lb-backup tmp]# grep \l\ grepdemo.txt L%alala3、过滤二进制文件 使用 -a 参数[rootk8s-lb-backup tmp]# printf hello word |grep hellohello word[rootk8s-lb-backup tmp]# [rootk8s-lb-backup tmp]# printf hello word\0 |grep hello匹配到二进制文件 (标准输入)[rootk8s-lb-backup tmp]# printf hello word\0 |grep -a hellohello word4、过滤文件的前两行、后两行、前后各两行[rootk8s-lb-backup tmp]# grep -B2 hah grepdemo.txt hello wordHi wuz\hao\bohello hahaha hehehe[rootk8s-lb-backup tmp]# grep -A2 hah grepdemo.txt hello hahaha heheheL%alala123/45/6[rootk8s-lb-backup tmp]# grep -C2 hah grepdemo.txt hello wordHi wuz\hao\bohello hahaha heheheL%alala123/45/65、过条件过滤 使用-e 参数 既包含 hello 也包含 wuz[rootk8s-lb-backup tmp]# grep -i -e hello -e wuz grepdemo.txt hello wordHi wuz\hao\bohello hahaha hehehe[rootk8s-lb-backup tmp]# grep -i hello grepdemo.txt |grep hehhello hahaha hehehe6、反向查找ps aux 过滤bash 使用 -v 参数[rootk8s-lb-backup tmp]# ps aux | grep bashroot 739 0.0 0.0 115404 964 ? S 09:35 0:00 /bin/bash /usr/sbin/ksmtunedroot 1994 0.0 0.0 116332 3064 pts/0 Ss 09:36 0:00 -bashroot 103695 0.0 0.0 112828 988 pts/0 S 14:09 0:00 grep --colorauto bash[rootk8s-lb-backup tmp]# ps aux | grep bash | grep -v grep | grep -v ksmtunedroot 1994 0.0 0.0 116332 3064 pts/0 Ss 09:36 0:00 -bash7、列出所包含的文件使用-l参数列出不包含的文件 使用-L 参数 使用 -r 可以递归过滤目录[rootk8s-lb-backup tmp]# grep -l hello *.txt1.txtgrepdemo.txt[rootk8s-lb-backup tmp]# grep -L hello *.txt8、grep 管道合用[rootk8s-lb-backup tmp]# ps aux | grep bash9、grep 与 wc 统计数量和uniq相邻去重和sort(排序)合用[rootk8s-lb-backup tmp]# echo hello world |wc1行 2个单词 12字符[rootk8s-lb-backup tmp]# echo hello wrold |wc -c 12直接统计字符[rootk8s-lb-backup tmp]# echo hello wrold |wc -l1统计行数[rootk8s-lb-backup tmp]# echo hello wrold |wc -w2统计单词[rootk8s-lb-backup tmp]# grep -i -o hello grepdemo.txt | uniq (去重)hello [rootk8s-lb-backup tmp]# grep -i -o hello grepdemo.txt | sort -u 排序并去重使用 -u 参数hello10、xargs的使用格式化输出[rootk8s-lb-backup tmp]# cat 2.txt a b c d e f gh i g k l m no p qr s t u v wx y z[rootk8s-lb-backup tmp]# cat 2.txt | xargsa b c d e f g h i g k l m n o p q r s t u v w x y z[rootk8s-lb-backup tmp]# cat 2.txt | xargs | wc1 26 52[rootk8s-lb-backup tmp]# cat 2.txt | xargs -n 5 每行以5列输出a b c d ef g h i gk l m n op q r s tu v w x yz11、grep 过滤进程 并与awk合用 kill 杀死进程[rootk8s-lb-backup tmp]# ps aux | grep bashroot 762 0.0 0.0 115404 956 ? S 09:25 0:00 /bin/bash /usr/sbin/ksmtunedroot 1897 0.0 0.0 116332 3032 pts/0 Ss 09:26 0:00 -bashroot 6444 0.0 0.0 112828 988 pts/0 S 09:38 0:00 grep --colorauto bash[rootk8s-lb-backup tmp]# ps aux | grep bash | grep -v grep | grep -v ksmtuned root 1897 0.0 0.0 116332 3032 pts/0 Ss 09:26 0:00 -bash[rootk8s-lb-backup tmp]# ps aux | grep bash | grep -v grep | grep -v ksmtuned | awk {print $2}1897[rootk8s-lb-backup tmp]# ps aux | grep bash | grep -v grep | grep -v ksmtuned | awk {print kill -9 $2} | sh[rootk8s-lb-backup tmp]# kill -9 ps aux | grep bash | grep -v grep | grep -v ksmtuned | awk {print $2}12、grep 与 sed 合用查找本机IP地址先[rootk8s-lb-backup tmp]# ifconfig 在一层一层过滤 [rootk8s-lb-backup tmp]# ifconfig ens33[rootk8s-lb-backup tmp]# ifconfig ens33 | grep inetinet 192.168.134.141 netmask 255.255.255.0 broadcast 192.168.134.255inet6 fe80::e8e1:227e:c151:d3b6 prefixlen 64 scopeid 0x20link[rootk8s-lb-backup tmp]# ifconfig ens33 | grep inet | grep -v inet6inet 192.168.134.141 netmask 255.255.255.0 broadcast 192.168.134.255# 把inet之前的替换成空[rootk8s-lb-backup tmp]# ifconfig ens33 | grep inet | grep -v inet6 | sed s/^.*inet//g192.168.134.141 netmask 255.255.255.0 broadcast 192.168.134.255#再把netmask之后的替换成空[rootk8s-lb-backup tmp]# ifconfig ens33 | grep inet | grep -v inet6 | sed s/^.*inet//g | sed s/netmask.*$//g192.168.134.141
3、grep 正则匹配示例
1、匹配以 he 开头的行
[rootk8s-lb-backup tmp]# grep ^he grepdemo.txt
hello word
hello hahaha hehehe2、匹配以6结尾的行
[rootk8s-lb-backup tmp]# grep 6$ grepdemo.txt
123/45/63、匹配一个非换行字符 使用 . .表示任意字符
[rootk8s-lb-backup tmp]# grep w.rd grepdemo.txt
hello word4、匹配前一个字符0次或者1次以上
[rootk8s-lb-backup tmp]# grep hel* grepdemo.txt
hello word
hello hahaha hehehe5、匹配任意字符
[rootk8s-lb-backup tmp]# cat grepdemo.txt
hello word
Hi wuz\hao\bo
hello hahaha hehehe
L%alala
mysqla
mysqlb
mysqlA
mysqlB
mysql3
mysql5[rootk8s-lb-backup tmp]# grep mysql[a-zA-Z0-9] grepdemo.txt
mysqla
mysqlb
mysqlA
mysqlB
mysql3
mysql56、某一行以wo开头 和以rd结尾的字符
[rootk8s-lb-backup tmp]# grep \wo grepdemo.txt
hello word
[rootk8s-lb-backup tmp]# grep rd\ grepdemo.txt
hello word
二、sed sed 是对文本文件中的某一行进行增删改查等操作尝尝使用sed对文件的指定内容进行批量替换。
语法
sed [options] asd [flags] filename
命令参数
-f后面跟一个文本文件表示将sed的动作卸载一个文件内
-i直接修改文件内容sed加上此参数后对文件的修改会生效
-r支持扩展正则表达式
-n只打印匹配到的行经常与 -p 一起使用
-e逻辑和 默认选项
sed 常用的内部命令d:删除匹配的行并立即启用下一轮循环p:打印当前模式空间内容追加到默认输出之后a:在指定行后面追加文本支持使用\n实现多行追加i:在行前面插入文本支持使用\n实现多行追加c:替换行为单行或多行文本支持使用\n实现多行追加w:保存模式匹配的行至指定文件r:读取指定文件的文本至模式空间中匹配到的行后:为模式空间中的行打印行号!:模式空间中匹配行取反处理s///:查找替换支持使用其它分隔符如ss###加g表示行内全局替换在替换时可以加一下命令实现大小写转换\l:把下个字符转换成小写。\L:把replacement字母转换成小写直到\U或\E出现。\u:把下个字符转换成大写。\U:把replacement字母转换成大写直到\L或\E出现。\E:停止以\L或\U开始的大小写转换
flags:数字表示新文本替换的模式g全局 全部p表示打印原始的内容w filename 表示将替换的结果写入文件
示例
sed -e 1s/test/trial/g test.txt
1:表示 test.txt 的第一行
s:表示 替换
test 是原内容
trial 是替换成的内容
g 整行 替换
示例
一、替换
[rootk8s-lb-backup tmp]# cat seddemo.txt
This is a test of the trial script.
This is the second test of the trial script.1、将文本中第一行的 test 替换成 trial,并打印出来但是不会修改文件内容如果要修改文件内容 加上 -i 参数[rootk8s-lb-backup tmp]# sed -e 1s/test/trial/g seddemo.txt This is a trial of the trial script.This is the second test of the trial script.2、全局替换并写入文件 [rootk8s-lb-backup tmp]# sed -i s/test/trial/g seddemo.txt3、把第二行的第一个替换[rootk8s-lb-backup tmp]# sed 2s/test/asd/1 seddemo.txt This is a trial of the trial script.This is the second asd of the trial script.二、删除d和添加(a,i)
1、删除所有[rootk8s-lb-backup tmp]# sed d seddemo.txt 2、删除1行[rootk8s-lb-backup tmp]# sed 1d seddemo.txt This is the second test of the trial script.3、删除1-2行[rootk8s-lb-backup tmp]# sed 1,2d seddemo.txt 4、删除2-4行[rootk8s-lb-backup tmp]# sed 2,4d seddemo.txt5、在第2行前面插入[rootk8s-lb-backup tmp]# sed 2i my name is wuzhaobo seddemo.txt This is a trial of the trial script.my name is wuzhaoboThis is the second test of the trial script.6、在第2行后面插入[rootk8s-lb-backup tmp]# sed 2a my name is wuzhaobo seddemo.txt This is a trial of the trial script.This is the second test of the trial script.my name is wuzhaobo7、在第一行前面插入2行[rootk8s-lb-backup tmp]# sed 1i my name is wuzhaobo.\nthis is two hang seddemo.txt my name is wuzhaobo.this is two hangThis is a trial of the trial script.This is the second test of the trial script.三、sed 替换 c 参数
1、把第二行替换[rootk8s-lb-backup tmp]# sed 2c this is line number 2. seddemo.txt This is a trial of the trial script.this is line number 2.四、sed 转换 y 参数
1、把文件里的a转换成大写A 参数是一一 对应的。[rootk8s-lb-backup tmp]# sed y/a/A/ seddemo.txt This is A triAl of the triAl script.This is the second test of the triAl script.[rootk8s-lb-backup tmp]# echo this is 1 | sed y/123/456/this is 4五、sed p 打印命令
[rootk8s-lb-master tmp]# vim demo
aaa
bbbb
AABBCCDD
1、只打印匹配到的行[rootk8s-lb-master tmp]# sed -n /aaa/p demo aaa
2、打印第2行[rootk8s-lb-master tmp]# sed -n 2p demo Bbbb
3、先把包含3的这一行打印出来然后在把包含3的这一行中的bbbb替换成1111 ,在打印出来[rootk8s-lb-backup tmp]# sed -n /3/{ p s/bbbb/1111/p } seddemo.txtbbbb311113六、sed q 退出脚本
1、查找文件中 aaa 这一行 并把aaa替换成111然后退出。[rootk8s-lb-backup tmp]# sed /aaa/{s/aaa/111/;q} seddemo.txt 111
把TXT中的h1、h2、h3加上尖括号
[rootk8s-lb-backup tmp]# cat test.txt
html
titleFirst Web/title
body
h1Hello1h1
h2Hello2h2
h3hello3h3
/body
/html
1、
[rootk8s-lb-backup tmp]# sed {s/h[0-9]/\\/1;s/h[0-9]/\\/\/2} test.txt
html
titleFirst Web/title
body
h1Hello1/h1
h2Hello2/h2
h3hello3/h3
/body
/html
2、或者把/h[0-9] 公共的 提到前边
[rootk8s-lb-backup tmp]# sed /h[0-9]/{s//\\/1;s//\\/\/2} test.txt
html
titleFirst Web/title
body
h1Hello1/h1
h2Hello2/h2
h3hello3/h3
/body
/html
讲解使用替换的放是 s/a/b/1:第一次把a替换成b多条命令用;隔开表示当前匹配到的内容。2表示发生在第二个匹配位置
3、-或者使用调用脚本参数 -f 来执行
[rootk8s-lb-backup tmp]# cat a.sh
/h[0-9]/{s//\\/1s//\\/\/2
}
[rootk8s-lb-backup tmp]# sed -f a.sh test.txt
html
titleFirst Web/title
body
h1Hello1/h1
h2Hello2/h2
h3hello3/h3
/body
/html
三、awk
AWK是一种编程语言用于在linux下对文本和数据进行处理。可以处理每一行的每一列
一、语法
awk BEGIN {commands;……} pattern {commands;……} END {commands} filename
- BEGIN:处理数据前执行的命令
- END处理数据后执行的命令
- pattern模式每一行都执行的命令
- BEGIN和END里的命令只是执行一次
- pattern里的命令会匹配每一行去处理
二、常用参数
-F fsfs指定输入分隔符fs可以是字符串或正则表达式如-F: 默认使用 空格
-v varvalue赋值一个用户定义变量将外部变量传递给awk
-f scripfile从脚本文件中读取awk命令内置变量FS 输入字段分隔符默认为空白字符OFS 输出字段分隔符默认为空白字符RS 输入记录分隔符指定输入时的换行符原换行符仍有效ORS 输出记录分隔符输出时用指定符号代替换行符NF 字段数量共有多少字段 $NF引用最后一列$(NF-1)引用倒数第2列NR 行号后可跟多个文件第二个文件行号继续从第一个文件最后行号开始FNR 各文件分别计数, 行号后跟一个文件和NR一样跟多个文件第二个文件行号从1开始FILENAME 当前文件名ARGC 命令行参数的个数ARGV 数组保存的是命令行所给定的各参数查看参数
操作符算数操作符xy, x-y, x*y, x/y, x^y, x%y-x: 转换为负数x: 转换为数值比较操作符, !, , , , 模式匹配符~ 左边是否和右边匹配包含 !~ 不包含逻辑操作符与 或|| 非!函数调用 function_name(argu1, argu2, ...)条件表达式三目表达式selector?if-true-expression:if-false-expression注释先判断selector如果符合执行 ? 后的操作否则执行 : 后的操作 三、示例
创建awkdemo目录准备两个测试文件
[rootk8s-lb-backup awkdemo]# cp /etc/passwd ./
[rootk8s-lb-backup awkdemo]# ps aux test.txt 1、打印每一行 $代表是行 $0:表示所有行 $1:表示第一个字段的值 $2:表示第二个字段的值$NF:表示最后一个字段的值 $(NF-1):表示倒数第二个字段的值
[rootk8s-lb-backup awkdemo]# awk {print $0} test.txt2、打印第一列 $1
[rootk8s-lb-backup awkdemo]# awk {print $1} test.txt3、打印文件前5行 NR5[rootk8s-lb-backup awkdemo]# awk NR5 test.txt USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 125396 3912 ? Ss 09:14 0:01 /usr/lib/syroot 2 0.0 0.0 0 0 ? S 09:14 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 09:14 0:00 [ksoftirqd/0]打印文件前5行如果第一个文件行数不够 就从第二个开始[rootk8s-lb-backup awkdemo]# awk NR5 test1.txt passwd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 3 0.0 0.0 0 0 ? S 09:14 0:00 [ksoftirqd/0]root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin4、打印最后一列字段的值、和倒数第二行的值 $NF $(NF-1)[rootk8s-lb-backup awkdemo]# awk {print $NF} test.txt[rootk8s-lb-backup awkdemo]# awk {print $(NF-1)} test.txt5、指定分隔符并打印第一个字段的值 -F :[rootk8s-lb-backup awkdemo]# awk -F : {print $1} passwd 6、指定分隔符并打印包含job的行或者某个值[rootk8s-lb-backup awkdemo]# awk -F : /job/{print $0} passwd job:x:1000:1000:job:/home/job:/bin/bash7、begin 和 end 的使用以冒号分割先打印 hello 在打印第一列的值每一行1最后打印一共多少行和输出 goodbye[rootk8s-lb-backup awkdemo]# awk -F : BEGIN{ print hello }{ print $1;i1 } END { print i;print goodbye} passwd 或者从脚本中执行 -f[rootk8s-lb-backup awkdemo]# vim a.awkBEGIN{FS:; print hello }{ print $1;i1 }END { print i;print goodbye}[rootk8s-lb-backup awkdemo]# awk -f a.awk passwd 8、添加条件比如查找 passwd 中 piduid的行并打印[rootk8s-lb-backup awkdemo]# awk -F: $4 $3 {print $0} passwd二、操作符示例
1、查询以dev开头的磁盘信息 匹配使用 ~ 符号[rootk8s-lb-backup awkdemo]# df -h | awk $0 ~ /^\/dev//dev/mapper/centos-root 36G 3.8G 32G 11% //dev/sda1 1014M 179M 836M 18% /boot2、只打印磁盘名和使用状况 使用 $ 和 NF过滤[rootk8s-lb-backup awkdemo]# df -h | awk $0 ~ /^\/dev/{print $1 -----$(NF-1)}/dev/mapper/centos-root-----11%/dev/sda1-----18%3、查找磁盘大于15%的[rootk8s-lb-backup awkdemo]# df -h | awk $0 ~ /^\/dev/{print $1 $(NF-1)} | awk -F $2 15/dev/sda118%三、逻辑操作符 并且 或|| 非
1、查看passwd 中第三列的值 大于10 并且小于1000 的值[rootk8s-lb-backup awkdemo]# awk -F : $3 10 $3 1000 { print $3 } passwd 2、查看passwd 中第三列的值 大于10 或者小于1000 的值[rootk8s-lb-backup awkdemo]# awk -F : $3 10 || $3 1000 { print $3 } passwd 3、查看passwd 中第三列的值 不等于1000 的值[rootk8s-lb-backup awkdemo]# awk -F : $3 !1000 { print $3 } passwd 4、查看第四列之和[rootk8s-lb-backup awkdemo]# awk -F : { sum$4 } END {print sum} passwd 76412
5、查看系统 CPU和内存和[rootk8s-lb-backup awkdemo]# ps -aux | grep -v USER | awk { cpu$3;mem$4 } END { print cpu;print mem }08.3四、三目表达式
[rootk8s-lb-backup awkdemo]# awk -F : { $3 1000 ? usertypecommon user : usertypesysadmin user; print usertype,$1,$3} passwd
四、条件与循环语句
一、控制语句if-else语法
if(condition){statement;…}[elsestatement] 双分支
if(condition1){statement1}else if(condition2){statement2}else{statement3} 多分支
示例对passwd 判断 当$3 的UID 当UID0时就是超级用户当UID大于1 小于等于999就是系统用户其余的就是普通用户[rootk8s-lb-backup awkdemo]# vim a.awkBEGIN{FS:}{if ($30){print $1 is super user;} else if($31 $3999 ){print $1 is system user;}else{print $1 is common user;}}[rootk8s-lb-backup awkdemo]# awk -f a.awk passwd
2、每隔5行打印分隔符就是5的倍数 使用NR%50
[rootk8s-lb-backup awkdemo]# awk {if (NR%50){ print ----------}print $0 } passwd
二、awk 循环语句 for
1、对每一行打印5次[rootk8s-lb-backup awkdemo]# awk -F : {for (i5;i0;i--){print $0} } passwd
2、使用for 循环 1至100的和[rootk8s-lb-backup awkdemo]# awk BEGIN {sum0; for(i1;i100;i){sumi}print sum}5050
3、使用while 循环 1至100的和[rootk8s-lb-backup awkdemo]# awk BEGIN {sum0;i1; while(i100){sumi;i};print sum}5050
4、使用 do while 循环 1至100的和[rootk8s-lb-backup awkdemo]# awk BEGIN {sum0;i1; do{sumi;i}while(i100);print sum}5050
5、使用for循环打印99乘法表
[rootk8s-lb-backup awkdemo]# awk BEGIN{for(i1;i9;i){for(j1;ji;j)printf i * j i*j \t;print(\n)}}
1*112*12 2*243*13 3*26 3*394*14 4*28 4*312 4*4165*15 5*210 5*315 5*420 5*5256*16 6*212 6*318 6*424 6*530 6*6367*17 7*214 7*321 7*428 7*535 7*642 7*7498*18 8*216 8*324 8*432 8*540 8*648 8*756 8*8649*19 9*218 9*327 9*436 9*545 9*654 9*763 9*872 9*981
6、while 循环打印99乘法表
[rootk8s-lb-backup awkdemo]# vim t.sh
BEGIN {i1while (i9){j1while(ji){printf i * j i*jprintf \tj}iprint \n}
}
[rootk8s-lb-backup awkdemo]# awk -f t.sh
1*112*12 2*243*13 3*26 3*394*14 4*28 4*312 4*4165*15 5*210 5*315 5*420 5*5256*16 6*212 6*318 6*424 6*530 6*6367*17 7*214 7*321 7*428 7*535 7*642 7*7498*18 8*216 8*324 8*432 8*540 8*648 8*756 8*8649*19 9*218 9*327 9*436 9*545 9*654 9*763 9*872 9*981
五、awk调用函数
1、截取字符串 使用 substr函数 substr(string,第几位开始截取几位)
[rootk8s-lb-backup awkdemo]# awk -f t.sh substr.txt[rootk8s-lb-backup awkdemo]# awk {if(substr($3,5,2)12){print $0}} substr.txt
4*14 4*28 4*312 4*4162、使用length 计算字符串长度
[rootk8s-lb-backup awkdemo]# awk {if(substr($3,5,2)12){print $0}{print length($3)}} substr.txt [rootk8s-lb-backup awkdemo]# vim a.sh
function test(t1,t2){t1 t2 ? vart1 : vart2return var
}
BEGIN{a3;b2;print test(a,b)
}[rootk8s-lb-backup awkdemo]# awk -f a.sh
3
文章转载自: http://www.morning.lhxrn.cn.gov.cn.lhxrn.cn http://www.morning.fylsz.cn.gov.cn.fylsz.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.msgrq.cn.gov.cn.msgrq.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn http://www.morning.c7498.cn.gov.cn.c7498.cn http://www.morning.drswd.cn.gov.cn.drswd.cn http://www.morning.cokcb.cn.gov.cn.cokcb.cn http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn http://www.morning.rqwmt.cn.gov.cn.rqwmt.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.jrgxx.cn.gov.cn.jrgxx.cn http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.fddfn.cn.gov.cn.fddfn.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.wqngt.cn.gov.cn.wqngt.cn http://www.morning.csnmd.cn.gov.cn.csnmd.cn http://www.morning.qdxwf.cn.gov.cn.qdxwf.cn http://www.morning.fssmx.com.gov.cn.fssmx.com http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.byxs.cn.gov.cn.byxs.cn http://www.morning.pwggd.cn.gov.cn.pwggd.cn http://www.morning.fjgwg.cn.gov.cn.fjgwg.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.zrqs.cn.gov.cn.zrqs.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn http://www.morning.qqnh.cn.gov.cn.qqnh.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.zdsqb.cn.gov.cn.zdsqb.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.ylljn.cn.gov.cn.ylljn.cn http://www.morning.rkjb.cn.gov.cn.rkjb.cn http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.xptkl.cn.gov.cn.xptkl.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.jqlx.cn.gov.cn.jqlx.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.bszmy.cn.gov.cn.bszmy.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.smjyk.cn.gov.cn.smjyk.cn http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn http://www.morning.xdhcr.cn.gov.cn.xdhcr.cn http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn http://www.morning.nckzt.cn.gov.cn.nckzt.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.rtbj.cn.gov.cn.rtbj.cn http://www.morning.yjtnc.cn.gov.cn.yjtnc.cn http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn http://www.morning.tkflb.cn.gov.cn.tkflb.cn http://www.morning.djpps.cn.gov.cn.djpps.cn http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn http://www.morning.synkr.cn.gov.cn.synkr.cn http://www.morning.ftsmg.com.gov.cn.ftsmg.com http://www.morning.xsymm.cn.gov.cn.xsymm.cn http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn http://www.morning.bsplf.cn.gov.cn.bsplf.cn http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.mfnjk.cn.gov.cn.mfnjk.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn http://www.morning.tldhq.cn.gov.cn.tldhq.cn