资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

linux命令行运算符 linux命令语法

Linux三剑客awk命令篇二:命令操作符

Linux三剑客awk命令篇二:命令操作符

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的宏伟网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

关于awk的原理等基本知识请参考上篇:

Linux三剑客awk命令篇一:原理及基本命令

补充

1、语法格式:

(1) Awk完整语法

awk 'BEGIN{commands} pattern{commands}END{commands} ' file

BEGIN{commands}:处理数据前执行的命令。

END{commands}:处理完数据后执行的命令。

这两个命令可以省略。见(2)

(2) Awk基本语法

awk -F '分割符' '/模式/{动作} ' file

这里的 '/模式/{动作} ' 类似于sed的命令格式。

模式:

(1) 正则表达式(注意格式: /正则表达式/ )

(2) 条件表达式(例如: 等等)

总结:

这里的模式通俗来讲是 用来找谁, 而动作表示是 干啥。

2、 awk的命令操作符

(1) 正则表达式与bash一致

(2) + - * / % ++ --

(3) || !

(4) = = != == ~ !~

~:表示匹配后面的模式,用于字段,见 案例1 。

其余的都比较常见就不举例了。

3、案例

案例1:

~使用案例

awk -F : '$3 ~ /\...\/{print $1,$3}' /etc/passwd

解释:

模式:\...\

\ \表示定界符,只匹配3个字符。

$3 ~:表示$3这个字段必须符合后面模式(\...\)的要求。

见如下输出结果,$3都是3个字符。

案例2:

% || ==使用案例

seq 100 | awk '$1 % 7 == 0 || $1 ~ /^99/{print $1}'

输出结果的要求:

整除7或者以99开头

案例3:

++使用

awk 'BEGIN{num=0}{num++}END{print num}' /etc/passwd

简单解释:

BEGIN{num=0}:定义一个变量num

{num++}:这里没有模式,只有动作。

即每匹配到文件/etc/passwd的一行就执行num++

END{print num}:文件遍历结束,打印num的值,即文件的行数。

这里我们使用wc -l验证也是没问题的。

cat /etc/passwd | wc -l

上面3个案例简单的使用了awk的命令操作符。

虽然只是用到了几个简单的,但是其他同理,大家可以执行操作。

下一篇:

Linux三剑客awk命令篇二之内部变量

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

linux shell 指令 诸如-d, -f, -e之类的判断表达式

文件比较运算符-e filename      

如果 filename存在,则为真       [ -e /var/log/syslog ]-d filename    

如果 filename为目录,则为真      [ -d /tmp/mydir ]-f filename  

如果 filename为常规文件,则为真    [ -f /usr/bin/grep ]-L filename      

如果 filename为符号链接,则为真    [ -L /usr/bin/grep ]-r filename      

如果 filename可读,则为真       [ -r /var/log/syslog ]-w filename    

如果 filename可写,则为真       [ -w /var/mytmp.txt ]-x filename      

如果 filename可执行,则为真      [ -L /usr/bin/grep ]filename1-nt filename2    

如果 filename1比 filename2新,则为真    [ /tmp/install/etc/services -nt /etc/services ]filename1-ot filename2

如果 filename1比 filename2旧,则为真    [ /boot/bzImage -ot arch/i386

/boot/bzImage ]字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string长度为零,则为真 [ -z "$myvar" ]-n string 如果 string长度非零,则为真 [ -n "$myvar" ]

string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three"]

string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]

算术比较运算符num1-eq num2 等于 [ 3 -eq $mynum ]

num1-ne num2 不等于 [ 3 -ne $mynum ]num1-lt num2 小于 [ 3 -lt $mynum ]

num1-le num2 小于或等于 [ 3 -le $mynum ]num1-gt num2 大于 [ 3 -gt $mynum ]

num1-ge num2 大于或等于 [ 3 -ge $mynum ]

拓展资料:

Linux操作系统

是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。

linux运算符 ; & && | 得作用

用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。

上一条命令的输出,作为下一条命令参数

方式: command1 | command2

Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推

利用一个管道

rpm -qa|grep licq

这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。

利用多个管道

cat /etc/passwd | grep /bin/bash | wc -l

这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash

放在启动参数后面表示设置此进程为后台进程

方式: command1

默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个''实现这个目的。

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 ? 中,可以通过 $? 获取当前变量的值,当 $?==0 时表示执行成功,当时 $?==1 (我认为是非0的数,返回值在0-255间),表示执行失败。

有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 和 || 来实现命令执行控制的功能,shell 将根据 或 || 前面命令的返回值来控制其后面命令的执行。

语法格式如下:

command1 command2 [ command3 ...]

命令之间使用 连接,实现逻辑与的功能。

只有在 左边的命令返回真(命令返回值 $? == 0 ), 右边的命令才会被执行。

只要有一个命令返回假(命令返回值 $? == 1 ),后面的命令就不会被执行。

逻辑或的功能

语法格式如下:

command1 || command2 [|| command3 ...]

命令之间使用 || 连接,实现逻辑或的功能。

只有在 || 左边的命令返回假(命令返回值 $? == 1 ),

|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。 只要有一个命令返回真(命令返回值 $? == 0 ),后面的命令就不会被执行。 –直到返回真的地方停止执行。

举例, ping 命令判断存活主机

注意 要连起来写

参考

Linux 里面命令行打开计算器 怎么输入

linux命令行计算器

详细文档请 man bc

在windows下,大家都知道直接运行calc,(c:\windows\system32\calc.exe),可以打开计算器。

注:

calculate vt.vi.

计算;calculator n. 计算器。calc就是这个计算的简写。

Ca在化学中是代表钙元素,calcium 

钙(20号元素,符号Ca)。两者有什么联系呢?

calculate 来自calculus,原义是做算术运算的小石子,是calx(石灰石)的小称。

那么在linux系统下,有无与windows下calc.exe类似的计算器呢?

下面总结linux下的三个命令,来介绍一下linux下的计算方法:

1)bc

bc在默认的情况下是个交互式的指 令。在bc工作环境下,可以使用以下计算符号:

+ 加法

- 减法

* 乘法

/ 除法

^ 指数

% 余数

如:

#

bc

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,

Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type `warranty'.

3+6           

=加法

9

4+2*3          =加法、乘法

10

(4+2)*3        =加法、乘法(优先)

18

4*6/8         

=乘法、除法

3

10^3         

=指数

1000

18%5           =余数

3+4;5*2;5^2;18/4     

=一行输入多个计算,用;相隔。

7

10

25

4

quit            =退出

# bc

bc 1.06

Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,

Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type `warranty'.

scale=3        

=设小数位

1/3

.333

quit

以上是交互的计算,那到也可以 不进行交互而直接计算出结果。

A.用echo和|法,如:

# echo "(6+3)*2" |bc

18

# echo 15/4 |bc

3

# echo "scale=2;15/4"

|bc

3.75

# echo "3+4;5*2;5^2;18/4"

|bc

7

10

25

4

另外,

bc除了scale来设定小数位之外,还有ibase和obase来其它进制的运算。

如:

//将16进制的A7输出为10进制, 注意,英文只能大写

# echo "ibase=16;A7"

|bc

167

//将2进制的11111111转成10进制

# echo "ibase=2;11111111"

|bc

255

//输入为16进制,输出为2进制

# echo "ibase=16;obase=2;B5-A4"

|bc

10001

对于bc还有补充,在bc --help中还可以发现:bc后可以接文件名。如:

# more calc.txt

3+2

4+5

8*2

10/4

# bc calc.txt

5

9

16

2

2)expr

expr命令可不光能计算加减乘除哦,还有很多表达式,都可以计算出结果,不过有一点需要注意,在计算加减乘除时,不要忘了使用空格和转义。下

面直接用实例来介绍一下expr的运算,如:

# expr 6 +

3      

(有空格)

9

# expr 2 \*

3     

(有转义符号)

6

# expr 14 % 9

5

# a=3

# expr

$a+5         

(无空格)

3+5

# expr $a +

5        

(变量,有空格)

8

#

a=`expr 4 + 2`

echo $a

6

# expr $a + 3

9

另外,expr对于字串的操作(计算)也是很方便的,如:

//字串长度

# expr length

"yangzhigang.cublog.cn"

21

//从位置处抓取字串

# expr substr "yangzhigang.cublog.cn"

1 11

yangzhigang

//字串开始处

# expr index

"yangzhigang.cublog.cn" cu

13

3)dc

用dc来进行计算的人可以不多,因为dc与bc相比要复杂,但是在进行简单的计划时,是差不多的,不算难。dc为压栈操作,默认也是交互的,但

也可以用echo和|来配合打算。

如:

# dc

3

2+

p

5

4*

p

20

quit

# echo 3 2+ 4* p |dc

20

4)echo

echo用来进行回显,是周知的事。上面也配合bc来进行计算。其实echo也可以单独进行简单的计算,如:

# echo $((3+5))

8

# echo $(((3+5)*2))

16

echo还可以进行变量的计算,如:

# a=10

# b=5

# echo $(($a+$b))

15

# echo $a+$b

10+5

# echo $a+$b |bc

15

//计算前天的日期

#  echo `date

+%Y%m%d`

20090813

#  echo `date +%Y%m%d`-2

20090813-2

#  echo `date +%Y%m%d`-2

|bc

20090811

5)AWK

awk在处理文件的时,可以进行运算,那当然也可以单单用来计算了,如:

# awk 'BEGIN{a=3+2;print

a}'

5

# awk 'BEGIN{a=(3+2)*2;print

a}'

10

Awk 支持常见的运算符, 如 + (加),- (减), * (乘), / (除), ^ 或 ** (乘方), % (取模)

等等。 此外, awk 也提供了一些常用的数学函数, 比如 sin(x), cos(x), exp(x), log(x),

sqrt(x), rand()。 使用这些运算符和函数可以直接进行一些简单的运算:

# echo | awk '{print

8+6}'

14

# echo | awk '{print

8/6}'

1.33333

# echo | awk '{print

9%5}'

4

请放心使用

有问题的话请追问

满意请及时采纳,谢谢


当前文章:linux命令行运算符 linux命令语法
URL标题:http://cdkjz.cn/article/dodhdeh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220