awk、变量、运算符、if多分支

摘要:
~#Awk'NR==1{print}'/etc/passwdroot:x:0:0:root:/root:/bin/bash#3。命令{print$0}4.读取后处理结束{Awk_cmd1;Awk_cmd 2;}NR表示AWK读取的行数:FNR表示读取行所在文件中的行数#AWK“{printNR,FNR,$1}”file1file211aaaa22bbbbbb33ccccc41dddd52eeeeeee63ffffffff#逻辑操作可以直接引用操作字段==˃=~#AWK'NR==1{print}”/etc/passwordword:x:0:0:root:/root:/bin/bash#3。命令{print$0}4。读取后处理结束{awk_cmd1;awk_cmd 2;}方法引用shell变量:#a=root#awk vvar=$a-F:'$1==var{print$0}'/etc/passwd或拆分整个命令并将其传递给暴露shell变量。#awk-F:'$1==“'$a'”{print$0}'/etc/passwd#a=NF#awk-F:'{print$'$a'}'/etc/passwd运算符:赋值=+=-=/=*=逻辑和逻辑或逻辑不是&|!无论是否匹配正则,正则都需要用/register/~在比较字符串时,用双引号将字符串括起来˂=!

awk、变量、运算符、if多分支

awk

语法
awk [options] 'commands' files
option
-F 定义字段分隔符,默认的分隔符是连续的空格或制表符
使用option中的-F参数定义间隔符号
用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域
NF变量表示当前记录的字段数
-v 定义变量并赋值 也可以借用次方式从shell变量中引入

 

NR变量定址:

NR 表示AWK读入的行数
FNR表示读入行所在文件中的行数
# awk '{print NR,FNR,$1}' file1 file2 
1 1 aaaaa
2 2 bbbbb
3 3 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff

逻辑运算 可直接引用域进行运算
== >= <= != > < ~ !~
# awk 'NR==1 {print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

3.命令 {print $0}
4.读后处理 END {awk_cmd1;awk_cmd2;}

 

NR 表示AWK读入的行数:
FNR表示读入行所在文件中的行数
# awk '{print NR,FNR,$1}' file1 file2 
1 1 aaaaa
2 2 bbbbb
3 3 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff
#
逻辑运算 可直接引用域进行运算
== >= <= != > < ~ !~
# awk 'NR==1 {print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

3.命令 {print $0}
4.读后处理 END {awk_cmd1;awk_cmd2;}

 

引用shell变量的方法:

# a=root
# awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd
或者 把整个命令拆开传递,让shell变量外露,
# awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
# a=NF
# awk -F: '{print $'$a'}' /etc/passwd

 

操作符

赋值
= += -= /= *= 

逻辑与 逻辑或 逻辑非
&& || !
匹配正则或不匹配,正则需要用 /正则/ 包围住
~ !~
关系 比较字符串时要把字符串用双引号引起来
< <= > >= != ==
字段引用
$ 字段引用需要加$,而变量引用直接用变量名取
运算符
+ - * / % ++ --

分支结构:

if (条件) 动作
若有多个动作,则要用大括号将动作体包含起来 if (条件) {动作1;动作2}
# awk -F: '{if ($1 == "root") print $1}' /etc/passwd
root

# awk -F: '{if ($1 == "root") {print $1;print $6}}' /etc/passwd
root
/root

输出样式:
%s是字符类型,%d数值类型
printf默认是不输出换行的所以要加
10和7是偏移量
默认是右对齐,所有加个- 就是左对齐,就是把不足的位数用空格填充
注意:格式与输出列之间要有逗号
# awk -F: '{printf "%-10s %-10d %s ",$1,$3,$7}' /etc/passwd

免责声明:文章转载自《awk、变量、运算符、if多分支》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇zookeeper3.4.6配置实现自动清理日志【转】微信开发-ACCESS TOKEN 过期失效解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]php cli命令 自定义参数传递

FROM : http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html 所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件。这个可执行文件可以被用来运行命令行的PHP程序。要在你的系统上找到这个可执行文件,就要遵照下面的步骤:      ...

快速掌握Shell编程

(一)Shell编程概述 1.1 shell简述 Shell编程和JavaScript非常相似,Shell和JavaScript都是弱类型语言,同时也都是解释型语言。解释型语言需要解释器,JavaScript的解释器是浏览器,Shell脚本的解释器时bash,是一个shell、一个命令行用户接口。 1.2 bash简述 bash在执行或者解释脚本的时候,此...

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) 1.Linux shell 截取字符变量的前8位 实现方法有如下几种: expr substr “$a” 1 8 echo $a|awk ‘{print substr(,1,8)}’ echo $a|cut -c1-8 echo $ expr $a : ‘(....

linux shell 学习笔记--变量声明与赋值,循环

Bash 变量是不分类型的 ------------------------ 不像其他程序语言一样,Bash 并不对变量区分"类型".本质上,Bash 变量都是字符串. 但是依赖于上下文,Bash 也允许比较操作和算术操作.决定这些的关键因素就是,变量中的值 是否只有数字. 赋值 a=123 a="sdsd" #注意=左右不要有空格,否则就变成比较字...

lua 代码加密方案

require 实现 require函数在实现上是依次调用package.searchers(lua51中是package.loaders)中的载入函数,成功后返回。在loadlib.c文件里有四个载入函数的实现,分别为searcher_preload, searcher_Lua, searcher_C, searcher_Croot。 searche...

关于matlab的软件评测

在如今日益发展的信息膨胀社会,每天都会产生数以亿计的数据,而处理数据的软件就非常的重要了。 matlab也是一款处理数据的软件,同时,它也是一个方便数学研究者进行数学运算的实用工具。matlab具有自己的 函数库,其中包含了很多数学函数,例如积分函数,求值函数,还有概率论与统计的函数。对于处理起数据来,方便 使用。matlab还拥有自己的帮助书工具,在ma...