14、在指定行前后加一行
在第二行前一行加txt:
在第二行后一行加txt:
15、通过IP获取网卡名
16、浮点数运算(数字46保留小数点)
17、替换换行符为逗号
说明:三目运算符(a?b:c),第一个s是变量,s?s","$0:$0,第一次处理1时,s变量没有赋值初值是0,0为假,结果打印1,第二次处理2时,s值是1,为真,结果1,2。以此类推,小括号可以不写。
说明:第一个标签a,先读取第一行记录1追加到模式空间,此时模式空间内容是1$,执行$!b($!最后一行不跳转,b是控制流跳转命令)跳转到a标签,继续读取第二行记录2追加到模式空间,因为使用N命令,每个记录以换行符(\n)分割,此时模式空间内容是1\n2$,执行将换行符替换逗号命令,继续跳转到a标签...
说明:与上面类似,其中t是测试命令,当上一个命令(替换)执行成功才跳转。
说明:3是文本最后一个数
说明:将每行放到数组,然后替换
18、把奇数换行符去掉
21、只打印奇数或偶数行
说明:先知道对于数值运算,未定义变量初值为0,对于字符运算,未定义变量初值为空字符串。
读取第一行记录,然后进行模式匹配,i是未定义变量,也就是i=!0,!取反意思。感叹号右边是个布尔值,0或空字符串为假,非0或非空字符串为真,!0就是真,因此i=1,条件为真打印第一条记录。
没有print为什么会打印呢?因为模式后面没有动作,默认会打印整条记录。
读取第二行记录,进行模式匹配,因为上次i的值由0变成了1,此时就是i=!1,条件为假不打印。
读取第三行记录,因为上次条件为假,i恢复初值为0,继续打印。以此类推...
可以看出,运算时并没有判断记录,而是利用布尔值真假判断。
说明:步长,每隔一行打印一次
说明:先打印第一行,执行n命令读取当前行的下一行2,放到模式空间,后面再没有打印模式空间行操作,所以只保存不打印,同等方式继续打印第三行。