AWK

5、操作符
运算操作符:
+-*/ %(取余、取模)** //(取整)
比较运算符:
== ! = <> =<=
~!~
逻辑操作符:
&&
||
!
赋值运算:
= += -= /= *= %= ^= //=
条件表达式:
条件语句? 条件成立语句;条件不成立语句
awk '/^title/{FN<=2? print;printf"参数\n"}' /boot/grub/grub.conf

6、常见(action)
print printf 以及它任何命令的操作都是action
1、expressions
2、control statement 控制语句 例如:if while
逻辑关系语句判断来进行结和
3、语句组合 compound statements

4、Input statements 输入语句
5、output statements 输出语句

7、常见语言(if while do for break continue delete switch)
1、if语句
语法格式:if(条件表达式){执行语句}
if (条件表达式){执行语句}else{执行语句}
awk ‘/^title/{if(Fn<=2){print}else{print " 参数过少"}}’/boot/grub/grub.conf
awk '/^title/{if(NF>=2) print $4}' /boot/grub/grub.conf
2、while
只有对参数进行遍历的时候才会使用循环;
例题:awk '/^[[:space:]]*kernel\>/{print}' grub.conf
语法格式:
只有对行参数进行
3、for语句
语法格式:for(初始值;条件判断;初始值控制语句){循环体}
awk '/^[:space:]]*kernel\>/{for(i=0;i<=NF;i++){print $i"\t";print length($i)}}' grub.conf
循环建议用for循环
在awk中,for也可以使用和shell中一样的格式:
回顾:
for (i in 列表){循环体}
echo "wsl is good boy" | awk 'for i in{$i}'
例题:

4、do -while 循环
语法:do {循环体} while (循环条件)
注意和while的区别:while语句只有在满足条件的时候,才会进入循环,而do while 会先执行循环体一次,在进行判断;
5、循环跳出语句
break 【n】跳出n次循环
continue 跳出本次循环
next 跳出默认的当次循环
NR%2==1 next
awk `{if(NR%2==1){else {print}}}` /etc/passwd
6、switch 类似于case
语法格式:switch (expression){caseVALUE1 or /REGXP/: statement;case VALUE2 or /REGEXP2/:statement;……default;statemwnt}
switch(表达式){case 模式匹配值:执行语句;case模式值:执行语句;case模式匹配值:执行语句,}
8、数组
在awk中,数组和shell中数组特性相同
注意:awk中数组不用定义,只要使用了,就有值为空的默认数组;这样做数据统计的时候非常常见!!!!!!
行遍历---实际上就是整个文件的遍历
列遍历---取对象固定某列的中的,相同数据的统计。

注意:数组通过for语句,在给其他变量进行赋值的时候,赋值的index索引信息;
练习:
awk '{for (i=1;i<=N;i++){count[4i++]}}end{for(i in count){print 1,count[i]}}' /etc/fstab

9、函数
1、内置函数:
函数调用:function(参数)
length($1)
数学运算上使用的函数 sin()cos()cot()tan()
sub(x,x,x)替换第一个匹配到的值
gsub(x,x,x)替换该行所匹配到的所有值
split(x,x,x)指定分隔符去切割文件。
---------------------------------------------------------------------------------------------------------------------

chroot 

切换系统目录
/--/dev/sda1
原来的操作系统的shell程序切换到一个新的目录下面去,然后再在这个目录下面放置相应系统启动需要的程序文件。
拓展:
虚拟化准备知识:系统的启动原理
读取系统--读取磁盘:前提就是必须现价载磁盘的驱动程序
挂载 虚拟根(img虚根文件ramdisk)
虚根文件文件挂上以后,在grub1.4
通过chroot将ramdisk 上面的临时“根”切换到磁盘上面

···················································································································

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2021-06-30
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2020-04-29
  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
相关资源
相似解决方案