澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

澳门游戏平台打大全linux shell必知必会sed、awk

生机勃勃、使用printf格式化输出

printf 能够特别灵活、轻松地以你愿意的格式输出结果。

语法:

printf "print format", variable1,variable2,etc.

printf 中的特殊字符

澳门各大游戏平台网站 1

printf 不会动用 OFS 和 O昂科雷S,它只依照”format”里面包车型大巴格式打字与印刷数据。

printf 格式化字符

澳门各大游戏平台网站 2

实例1:

[root@localhost ~]# cat pri.awk 
BEGIN {
    printf "s--> %sn", "String"
    printf "c--> %cn", "String"
    printf "s--> %sn", 101.23
    printf "d--> %dn", 101,23
    printf "e--> %en", 101,23
    printf "f--> %fn", 101,23
    printf "g--> %gn", 101,23
    printf "o--> %on", 0x8
    printf "x--> %xn", 16
    printf "percentage--> %%n", 17
}
[root@localhost ~]# awk -f pri.awk 
s--> String
c--> S
s--> 101.23
d--> 101
e--> 1.010000e+02
f--> 101.000000
g--> 101
o--> 10
x--> 10
percentage--> %

printf中期维修饰字符:

修饰符:#[.#] 第三个数字调控突显的升幅;首个#意味着小数点后精度

– 左对齐(私下认可右对齐)%-15s

+ 展现数值的正负符号 %+d,0也会增加正号

$ 假若要在标价以前增加美金符号,只需在格式化字符串以前(%以前卡塔尔(قطر‎加上$就可以

0 右边补 0 (并非空格卡塔尔,在钦赐宽度的数字后边加一个0,比方利用"%05s"替代"%5s"

实例2:

[root@localhost ~]# awk 'BEGIN { printf "|%6s%7.3f|n", "Good","2.1" }'  
|  Good  2.100|
[root@localhost ~]# awk 'BEGIN { printf "|%-6s%-7.3f|n", "Good","2.1" }'
|Good  2.100  |

把结果重定向到文件:

Awk 中能够把 print 语句打字与印刷的剧情重定向到钦命的文书中。

实例3:

[root@localhost ~]# awk 'BEGIN{a=5;printf "%3dn",a> "report.txt"}'
[root@localhost ~]# cat report.txt 
  5

另风度翩翩种方法应用awk -f script.awk file > redirectfile

awk脚本试行办法:

实例4:

[root@localhost ~]# cat fz.awk      
#!/bin/awk -f
BEGIN {
FS=",";
OFS=",";
total1 = total2 = total3 = total4 = total5 = 10;
total1 += 5; print total1;
total2 -= 5; print total2;
total3 *= 5; print total3;
total4 /= 5; print total4;
total5 %= 5; print total5;
}
[root@localhost ~]# chmod +x fz.awk   
[root@localhost ~]# ./fz.awk        
15
5
50
2
0

linux shell必知必会sed、awk

Linux Awk notes

二、awk内置函数与自定义函数

数值管理函数:

rand()函数

rand(卡塔尔函数用于爆发 0~1 之间的人身自由数,它只回去 0~1 之间的数,绝不会重回 0 或 1。那一个 数在 awk 运维时是大肆的,不过在一连运转中,又是可预见的。

实例1:爆发 1000 个随机数(0 到 100 之间State of Qatar

[root@localhost ~]# cat occ.awk 
BEGIN {
    while(i<1000)
    {
        n = int(rand()*100);
        rnd[n]++;
        i++;
    }
    for(i=0;i<=100;i++)
    {
        print i,"Occured",rnd[i],"times";
    }
}
[root@localhost ~]# awk -f occ.awk 
0 Occured 11 times
1 Occured 8 times
2 Occured 9 times
3 Occured 15 times
4 Occured 16 times
5 Occured 5 times
6 Occured 8 times
7 Occured 9 times
8 Occured 7 times
9 Occured 7 times
10 Occured 11 times
11 Occured 7 times
12 Occured 10 times
13 Occured 9 times
14 Occured 6 times
15 Occured 18 times
16 Occured 10 times
17 Occured 10 times
18 Occured 9 times
19 Occured 8 times
20 Occured 11 times
21 Occured 13 times
22 Occured 10 times
23 Occured 9 times
24 Occured 15 times
25 Occured 8 times
26 Occured 3 times
27 Occured 17 times
28 Occured 9 times
29 Occured 13 times
30 Occured 11 times
31 Occured 9 times
32 Occured 12 times
33 Occured 12 times
34 Occured 9 times
35 Occured 6 times
36 Occured 13 times
37 Occured 15 times
38 Occured 6 times
39 Occured 9 times
40 Occured 7 times
41 Occured 8 times
42 Occured 6 times
43 Occured 8 times
44 Occured 10 times
45 Occured 7 times
46 Occured 10 times
47 Occured 8 times
48 Occured 16 times
49 Occured 12 times
50 Occured 6 times
51 Occured 15 times
52 Occured 6 times
53 Occured 12 times
54 Occured 8 times
55 Occured 13 times
56 Occured 6 times
57 Occured 16 times
58 Occured 5 times
59 Occured 7 times
60 Occured 11 times
61 Occured 12 times
62 Occured 14 times
63 Occured 11 times
64 Occured 9 times
65 Occured 6 times
66 Occured 7 times
67 Occured 10 times
68 Occured 8 times
69 Occured 12 times
70 Occured 13 times
71 Occured 9 times
72 Occured 10 times
73 Occured 11 times
74 Occured 7 times
75 Occured 13 times
76 Occured 13 times
77 Occured 10 times
78 Occured 5 times
79 Occured 12 times
80 Occured 17 times
81 Occured 8 times
82 Occured 7 times
83 Occured 10 times
84 Occured 12 times
85 Occured 12 times
86 Occured 11 times
87 Occured 14 times
88 Occured 4 times
89 Occured 8 times
90 Occured 15 times
91 Occured 10 times
92 Occured 15 times
93 Occured 8 times
94 Occured 11 times
95 Occured 5 times
96 Occured 12 times
97 Occured 11 times
98 Occured 7 times
99 Occured 11 times
100 Occured  times

注意:可以预知rand()函数发生的率性数重复概率极高。

srand(n)函数

srand(n卡塔尔函数使用给定的参数 n 作为种子来起初化随机数的发出进程。无论何时运转, awk 只会从 n 开首发生随机数,假诺不点名参数 n, awk 暗许使用当天的时间作为发生随机数的 种子。

实例2:发生 5 个从 5 到 50 的轻便数

[root@localhost ~]# cat srand.awk 
BEGIN {
    #Initialize the sedd with 5.
    srand(5);
    #Totally I want to generate 5 numbers
    total = 5;
    #maximun number is 50
    max = 50;
    count = 0;
    while(count < total)
    {
        rnd = int(rand()*max);
        if( array[rnd] == 0 )
        {
            count++;
            array[rnd]++;
        }
    }
    for ( i=5;i<=max;i++)
    {
        if (array[i])
            print i;}
    }
[root@localhost ~]# awk -f srand.awk 
14
16
23
33
35

常用字符串函数

length函数:

length([S]卡塔尔(قطر‎ 再次来到钦赐字符串长度。

实例1:length函数

[root@bash ~]# awk 'BEGIN{print length("young")}'
5

sub函数:

sub(r,s,[t]卡塔尔(قطر‎对t字符串举行找寻r表示的方式相配的剧情(可应用正则相称),并将第一个十二分的内容替换为s代表的字符串。

实例1:

[root@bash ~]# awk 'BEGIN{a="geek young";sub("young","xixi",a);print a}' 
geek xixi  #注意字符串要用引号

实例2:

[root@bash ~]# echo "geek young hahahaha"|awk '
>{sub(/<young>/,"xixi",$2);  #正则匹配模式中字符串不加引号
>print $2}'   
xixi

实例3:

[root@bash ~]# echo "2008:08:08:08 08:08:08" | awk 'sub(/:/,"",$1)'
200808:08:08 08:08:08

实例4:

[root@bash ~]# cat sub.awk
BEGIN {
state="CA is California"
sub("C[Aa]","KA",state);
print state;
}
[root@bash ~]# awk -f sub.awk
KA is California

gsub函数:

gsub([r,s,[t]])对t字符串实行搜索r表示的模式相配的剧情(可利用正则相配),并全体轮换为s。

实例1:

[root@bash ~]# echo "2008:08:08:08 08:08:08" | awk 'gsub(/:/,"",$1)'
2008080808 08:08:08

split函数:

split(s,array,[r])以r为划分符切割字符s,并将切割后的结果存至array表示的数组中率先个索引值为1,第四个索引值为2,…。

实例1:

[root@bash ~]# echo "192.168.1.1:80"|awk '
>{split($1,ip,":");
>print ip[1],"----",ip[2]}'                       
192.168.1.1 ---- 80

实例2:

[root@bash ~]# netstat -tan | awk '
>/^tcp>/{split($5,ip,":");
>count[ip[1]]++}  #将一个数组的值作为另一个数组的索引并自加通常用来计算重复次数
>END{for (i in count){print i,count[i]}}'
116.211.167.193 3
0.0.0.0 4
192.168.1.116 1

实例3:

[root@bash ~]# cat items-sold1.txt   
101:2,10,5,8,10,12
102:0,1,4,3,0,2
103:10,6,11,20,5,13
104:2,3,4,0,6,5
105:10,2,5,7,12,6
[root@bash ~]# cat split.awk
BEGIN {
FS=":"
} {
split($2,quantity,",");
total=0;
for(x in quantity)
total=total+quantity[x];
print "Item",$1,":",total,"quantities sold";
}
[root@bash ~]# awk -f split.awk items-sold1.txt
Item 101 : 47 quantities sold
Item 102 : 10 quantities sold
Item 103 : 65 quantities sold
Item 104 : 20 quantities sold
Item 105 : 42 quantities sold

substr 函数

语法:

substr(input-string,location,length)
  • substr 函数从字符串中领取内定的片段(子串卡塔尔,上面语法中:

  • input-string:包涵子串的字符串

  • location:子串的启幕地点

  • length:从 location 初始起,出去的字符串的总参谋长度。那个选项是可选的,若是不指

  • 定长度,那么从 location 开首一向取到字符串的末梢

实例1:从字符串的第 5 个字符早先,取到字符串结尾并打字与印刷出来

[root@localhost ~]# cat items.txt 
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
[root@localhost ~]# awk '{ print substr($0,5) }' items.txt
HD Camcorder,Video,210,10
Refrigerator,Appliance,850,2
MP3 Player,Audio,270,15
Tennis Racket,Sports,190,20
Laser Printer,Office,475,5

实例2:从第 2 个字段的第 1 个字符起,打字与印刷 5 个字符

[root@localhost ~]# awk -F"," '{ print substr($2,1,5) }' items.txt
HD Ca
Refri
MP3 P
Tenni
Laser

调用shell函数

双向管道 |&

awk 能够行使”|&”和外界进度通讯,这么些历程是双向的。

实例1:

[root@localhost ~]# cat doub.awk 
BEGIN {
    command = "sed 's/Awk/Sed and Awk/'"
    print "Awk is Great!" |& command
    close(command,"to");  #awk中同时只能存在一个管道
    command |& getline tmp
    print tmp;
    close(command);
}
[root@localhost ~]# awk -f doub.awk 
Sed and Awk is Great!

证实:”|&”表示这里是双向管道。 ”|&”左边命令的输入来自右边命令的输出。close(command,"to"卡塔尔国 – 朝气蓬勃旦命令实践到位,应该关闭”to”进度。 command |& getline tmp –既然命令已经实践到位,将要用 getline 获取其出口。前面命令的输出会被存在变量”tmp”中。close(command卡塔尔最后,关闭命令。

system系统函数

进行系统命令时,能够传递任性的字符串作为命令的参数,它会被看作操作系统命令准确第推行,并赶回结果(那和双向管道有所分化State of Qatar。

实例1:

[root@localhost ~]# awk 'BEGIN{system("hostname");}' #不用加print命令
localhost.localdomain  
[root@localhost ~]# awk 'BEGIN{system("pwd")}'
/root
[root@localhost ~]# awk 'BEGIN{system("date")}'
Fri Jan 20 23:57:55 CST 2017

getline函数

geline 命令能够操纵 awk 从输入文件(或其余文件卡塔尔国读取数据。注意,风度翩翩旦 getline施行到位, awk 脚本会重新设置 NF,NENCORE,FNCRUISER 和$0 等内置变量。

实例1:

[root@localhost ~]# cat items.txt 
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
[root@localhost ~]# awk -F"," '
>{getline;print $0;}' items.txt #类似sed中n命令改变awk执行流程
102,Refrigerator,Appliance,850,2
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
  • 起先试行 body 区域时,实践其余命令以前, awk 从 items.txt 文件中读取第生机勃勃行数据,保存在变量$0 中

  • getline – 大家用 getline 命令强迫 awk 读取下后生可畏行数据,保存在变量$0 中(早先的内容被掩没掉了卡塔尔

  • print $0 –既然以往$0 中保留的是第二行数据, print $0 会打字与印刷文件第二行(实际不是首先行卡塔尔

  • body 区域继续实践,只打字与印刷偶数行的多寡。 (注意到终极豆蔻年华行 105 也打字与印刷了 卡塔尔国

除开把 getline 的开始和结果放到$0 中,还是能够把它保存在变量中。

实例2:打字与印刷奇数行

[root@localhost ~]# awk -F"," '{getline tmp; print $0;}' items.txt
101,HD Camcorder,Video,210,10
103,MP3 Player,Audio,270,15
105,Laser Printer,Office,475,5

说明:

  • 以前实施 body 区域时,试行其余命令早前, awk 从 items.txt 文件中读取第风度翩翩行数据,保存在变量$0 中

  • getline tmp – 强迫 awk 读取下生机勃勃行,并保留在变量 tmp 中

  • print $0 – 当时$0 仍为第朝气蓬勃行数据,因为 getline tmp 未有隐讳$0,因而会打字与印刷第风度翩翩行数据(并非第二行卡塔尔

  • body 区域继续实施,只打字与印刷奇数行的多寡。

实例3:从其余的文书 getline 内容到变量中

[root@localhost ~]# cat items.txt 
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
[root@localhost ~]# cat items-sold.txt 
101 2 10 5 8 10 12
102 0 1 4 3 0 2
103 10 6 11 20 5 13
104 2 3 4 0 6 5
105 10 2 5 7 12 6
[root@localhost ~]# awk -F"," '{
>print $0; 
>getline tmp < "items-sold.txt";
>print tmp;}' items.txt
101,HD Camcorder,Video,210,10
101 2 10 5 8 10 12
102,Refrigerator,Appliance,850,2
102 0 1 4 3 0 2
103,MP3 Player,Audio,270,15
103 10 6 11 20 5 13
104,Tennis Racket,Sports,190,20
104 2 3 4 0 6 5
105,Laser Printer,Office,475,5
105 10 2 5 7 12 6

实例4:getline 实践外界命令

[root@localhost ~]# cat get.awk 
BEGIN {
    FS=",";
    "date" | getline
    close("date")
    print "Timestamp:" $0
} {
if ( $5 <= 5)
    print "Buy More:Order",$2,"immediately!"
else
    print "Sell More:Give discount on",$2,"immediatelty!"
}
[root@localhost ~]# cat items.txt 
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
[root@localhost ~]# awk -f get.awk items.txt 
Timestamp:Sat Jan 21 00:23:53 CST 2017
Sell More:Give discount on HD Camcorder immediatelty!
Buy More:Order Refrigerator immediately!
Sell More:Give discount on MP3 Player immediatelty!
Sell More:Give discount on Tennis Racket immediatelty!
Buy More:Order Laser Printer immediately!

实例5:除了把命令输出保存在$0 中之外,也足以把它保存在自由的 awk 变量中

[root@localhost ~]# cat get2.awk              
BEGIN {FS=",";
    "date" | getline timestamp
    close("date")
    print "Timestamp:" timestamp
} {
if ( $5 <= 5)
    print "Buy More: Order",$2,"immediately!"
else
    print "Sell More: Give discount on",$2,"immediately!"
}
[root@localhost ~]# awk -f get2.awk items.txt 
Timestamp:Sat Jan 21 00:26:29 CST 2017
Sell More: Give discount on HD Camcorder immediately!
Buy More: Order Refrigerator immediately!
Sell More: Give discount on MP3 Player immediately!
Sell More: Give discount on Tennis Racket immediately!
Buy More: Order Laser Printer immediately!

awk自定义函数

格式:

function name ( parameter, parameter, ... ) {
statements
return expression
}

实例1:

[root@localhost ~]``# cat fun.awk

function max(v1,v2) {

``v1>v2?var=v1:var=v2

``return var

}

BEGIN{a=3;b=2;print max(a,b)}

[root@localhost ~]``# awk -f fun.awk

3

正文永远更新链接地址:http://www.linuxidc.com/Linux/2017-02/140274.htm

澳门各大游戏平台网站 3

 

 

sed是风姿浪漫种在线编辑器,它叁次拍卖生机勃勃行内容。处理时,把当前拍卖的行存款和储蓄在一时缓冲区中,称为“情势空间”(pattern space),接着用sed命令处理缓冲区中的内容,管理完了后,把缓冲区的剧情送往荧屏。接着管理下后生可畏行,那样不断重复,直到文件末尾。文件内容并不曾改观,除非你利用重定向存款和储蓄输出。Sed首要用以自动编辑多少个或五个文件;简化对文件的往往操作;编写转变程序等。以下介绍的是Gnu版本的Sed 3.02。

  1. awk语言
  1. 定址

  www.2cto.com  

能够通过定址来定位你所愿意编辑的行,该地点用数字组合,用逗号分隔的多少个行数表示以这两行为起止的行的界定(包括行数表示的那两行)。如1,3意味1,2,3行,日元符号($State of Qatar表示最后生龙活虎行。范围能够由此数据,正则表明式或然双方结合的格局明显。

awk是用来操作数据和暴发报表的大器晚成种编制程序语言。

  1. Sed命令

awk从第风流倜傥行到最后生龙活虎行逐行扫描一个文书,搜索与钦赐情势相称的行,并对那么些行履行选定的操作(操作封装在花括号里)。

调用sed命令有二种方式:

awk指令包蕴格局、操作或情势和操作的重新组合。

sed [options] 'command' file(s)

awk情势调节awk对生龙活虎行输入作什么样的操作;包罗正则表达式,能够爆发布尔值的表明式,或双边的结缘。awk支持的正则表明式与egrep基本生龙活虎致;也足以用 & >在代表串里表示找出串里般配到的字符串。

sed [options] -f scriptfile file(s)

awk操作是封装在花括号里且由支行分隔的话语(语句如若在各自的行里,也可用换行符分隔)。awk援助print和printf格式化输出,此中printf格式化字符与C语言中的格式化字符其本意气风发致。print提供换行符,printf不提供,换行时索要提供转义类别n。

a

 

在日前进前边加入意气风发行文本。

  1. awk内置变量

b lable

 

分层到脚本中包括标志的地点,假若分段海市蜃楼则分支到剧本的末梢。

停放变量名称大小,可以用在表达式里面,且能够被重新复苏设置。

c

  www.2cto.com  

用新的文件改变行当的文件。

变量名 变量含义

d

A奥迪Q3GC 命令行变量个数

从沙盘块(Pattern space)地点删除行。

A安德拉GV 命令行变量数组

D

FILENAME 当前输入的公文名

去除模板块的率先行。

NF 当前记录的域个数

i

N景逸SUV到如今结束全数输入文件的记录数

在时下行方面插入文本。

FN福睿斯到此结束当前文件的记录数

h

FS 输入域分割符,默以为三个空格。也能够在命令行通过 -F 选项钦命输入域分割符

拷贝模板块的剧情到内部存储器中的缓冲区。

OFS 输出域分割符

H

ENCORES 输入记录分割符

追加模板块的原委到内部存款和储蓄器中的缓冲区

O翼虎S 输出记录分割符

g

OFMT 数值输出格式;printf格式化输出时也可钦定数值输出格式

得到内存缓冲区的源委,并代替他当前模板块中的文本。

SUBSEP 下标分割符,可用于得以达成多维数组

G

大切诺基LENGTH 由match函数相称的串长度

获取内部存款和储蓄器缓冲区的原委,并追加到日前模板块文本的背后。

中华VSTART 由match函数相称的串偏移量

l

  1. BEGIN,END模式  www.2cto.com  

列表不可能打字与印刷字符的清单。

 

n

BEGIN情势后跟三个操作模块,在awk管理公事在此之前执行该模块。

读取下四个输入行,用下五个下令管理新的行实际不是用首个指令。

BEGIN操作平时用来改换FS、RubiconS、OFS等内置变量的值,或给客户自定义变量赋初值,把题目打字与印刷成输出的大器晚成局地等。

N

eg: awk 'BEGIN{FS=":"; OFS="t"}{print $1,$2}' filename

追加下三个输入行到模板块前边并在二者间嵌入三个新行,退换最近进号码。

 

p

END形式不与别的输入行相称,只进行与END模式相关的操作。在awk将全体输入行管理完后,才会施行END模块。

打印模板块的行。

eg: awk 'END{print "The number of records is " NR}' filename

P(大写)

 

打字与印刷模板块的率先行。

  1. awk内置函数

q

 

退出Sed。

getline

r file

getline函数用来从正规输入、管道、或文件读输入,并不是从正被管理的当前文件。

从file中读行。

eg: awk 'BEGIN{"date" | getline dt; print dt}' filename

t label

system

if分支,从最终蓬蓬勃勃行开头,条件生龙活虎旦满意也许T,t命令,将变成分支到含有标号的命令处,可能到剧本的最后。

system函数将三个shell命令当作它的变量,施行该命令,并把退出状态重回给awk。

T label

sub和gsub

似是而非分支,从最终风姿洒脱行开端,大器晚成旦爆发错误可能T,t命令,将造成分支到含有标号的一声令下处,只怕到剧本的末梢。

sub函数把正则 表明式与记录里最大且最左边的字符串相配,然后用替换串替换该字符串。sub将对象字符串(eg: $1)作为第多个参数,可选;假如没钦命目的串,私下认可使用整条记录。

w file

gsub函数全局替换记录知府则表达式的每便相配。 sub (regular expression, substitution string[, target string]) gsub (regulat expression, substitution string[, target string])

写并追加模板块到file末尾。

index

W file

index函数重回在三个字符串里找到子串的第多少个地点,偏移量从1初步

写并扩张模板块的第黄金时代行到file末尾。

index (string, substring)

!

length

意味着前面包车型大巴吩咐对持有未有被选定的行产生作用。

length函数重临三个字符串的字符数;如果未有变量,就回来一条记下里的字符数。

s/re/string

length [(string)]

用string替换正则表明式re。

substr

=

substr函数重返从第三个职分上马的字符串的叁个子串;这里首先个职位是1。 substr (string, starting position[, length of string])

打字与印刷当前行号码。

match

#

match函数重回字符串里找到正则表明式地方的目录;借使没找到,重回0。

把注释增加到下一个换行符早先。

match函数将放置变量ENCORESTART设置为子串的苗头地方,设置CRUISERLENGTH为到子串末尾截至的字符数。

以下的是替换标志

match (string, regular expression)

g表示行内全面替换。

split

p表示打字与印刷行。

split函数把字符串划分为三个数组。split将域分割符作为第几个参数,可选;要是没提供,则私下认可使用当前FS值。

w表示把行写入二个文本。

split (string, array[, field separator])

x表示交流模板块中的文本和缓冲区中的文本。

sprintf

y表示把叁个字符翻译为别的的字符(可是不用王斌则表明式)

sprintf函数以钦点格式再次回到二个表明式,允许接受printf的格式表达。

  1. 选项

int

-e command, --expression=command

int函数舍去小数点后其余数位来创建三个莫西干发型。

同意多台编辑。

rand

-h, --help

rand函数发生四个抢先或等于0且小于1的伪随机数。

打字与印刷协助,并展现bug列表的地址。

srand

-n, --quiet, --silent

srand未有参数,就用日期发生rand函数的种子;srand(x卡塔尔国将x作为种子。

撤除暗中认可输出。

Awk notes 1. awk语言 www.2cto.com awk是用来操作数据和产生报表的大器晚成种编制程序语言。 awk从第生龙活虎行到结尾后生可畏行逐行扫描三个文本,寻觅与钦赐方式...

-f, --filer=script-file

带领sed脚本文件名。

-V, --version

打印版本和版权音信。

  1. 元字符集

^

锚定行的始发 如:/^sed/相称全数以sed初步的行。

$

锚定行的达成 如:/sed$/相配全数以sed结尾的行。

.

协作一个非换行符的字符 如:/s.d/相配s后接多个随机字符,然后是d。

*

相配零或八个字符 如:/*sed/相称全部模板是七个或四个空格后紧跟sed的行。

[]

非凡贰个点名范围内的字符,如/[Ss]ed/匹配sed和Sed。

[^]

极度叁个不在钦点范围内的字符,如:/[^A-RT-Z]ed/相称不分包A-奥迪Q5和T-Z的三个假名领头,紧跟ed的行。

(..)

保存匹配的字符,如s/(love)able/1rs,loveable被替换到lovers。

&

保留找寻字符用来替换其余字符,如s/love/**&**/,love这成**love**。

<

锚定单词的起来,如:/<love/相称满含以love开端的单词的行。

>

锚定单词的结束,如/love>/相配富含以love结尾的单词的行。

x{m}

再一次字符x,m次,如:/0{5}/相称包括5个o的行。

x{m,}

再度字符x,起码m次,如:/o{5,}/相配至少有5个o的行。

x{m,n}

再也字符x,最少m次,相当少于n次,如:/o{5,10}/匹配5--10个o的行。

  1. 实例

删除:d命令

$ sed '2d' example-----删除example文件的第二行。

$ sed '2,$d' example-----删除example文件的第二行到最后全部行。

$ sed '$d' example-----删除example文件的最后生机勃勃行。

$ sed '/test/'d example-----删除example文件全体包蕴test的行。

替换:s命令

$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。若无g标识,则只有每行第多少个门户大致的test被替换来mytest。

$ sed -n 's/^test/mytest/p' example-----(-nState of Qatar选项和p标记一齐利用表示只打字与印刷这个发生替换的行。也便是说,若是某豆蔻梢头行初步的test被替换来mytest,就打字与印刷它。

$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。全部以192.168.0.1起来的行都会被替换到它自已加localhost,产生192.168.0.1localhost。

$ sed -n 's/(love)able/1rs/p' example-----love被标识为1,全体loveable会被替换到lovers,并且替换的行会被打字与印刷出来。

$ sed 's#10#100#g' example-----无论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在此是分隔符,替代了私下认可的“/”分隔符。表示把装有10替换到100。

选定行的界定:逗号

$ sed -n '/test/,/check/p' example-----全部在模板test和check所规定的范围内的行都被打字与印刷。

$ sed -n '5,/^test/p' example-----打印从第五行起先到第多个满含以test开首的行之间的有着行。

$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的结尾用字符串sed test替换。

多点编辑:e命令

$ sed -e '1,5d' -e 's/test/check/' example-----(-e卡塔尔选项允许在同豆蔻梢头行里施行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的施行顺序对结果有震慑。假如三个指令都以替换命令,那么首先个替换命令将震慑第三个替换命令的结果。

$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更加好的下令是--expression。它能给sed表明式赋值。

从文件读入:r命令

$ sed '/test/r file' example-----file里的内容被读进去,展现在与test匹配的行前面,要是相配多行,则file的从头到尾的经过将呈现在具备相配行的底下。

写入文件:w命令

$ sed -n '/test/w file' example-----在example中具有饱含test的行都被写入file里。

充实命令:a命令

$ sed '/^test/a\--->this is a example' example<-----'this is a example'被追加到以test起头的行后边,sed必要命令a前面有三个反斜杠。

插入:i命令

$ sed '/test/i\

new line

-------------------------' example

即使test被相称,则把反斜杠后边的文本插入到相称行的最近。

下一个:n命令

$ sed '/test/{ n; s/aa/bb/; }' example-----假设test被相配,则运动到相配行的下风度翩翩行,替换那生龙活虎行的aa,变为bb,并打字与印刷该行,然后继续。

变形:y命令

$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内全部abcde转换为大写,注意,正则表明式元字符无法利用这么些命令。

退出:q命令

$ sed '10q' example-----打字与印刷完第10行后,退出sed。

维持和获得:h命令和G命令

$ sed -e '/test/h' -e '$G example-----在sed管理公事的时候,每生龙活虎行都被保留在三个叫方式空间的一时缓冲区中,除非行被删去只怕输出被撤回,不然全部被管理的行都将打印在显示屏上。接着形式空间被清空,并存入新的一行等待管理。在这里个例子里,相配test的行被找到后,将存入格局空间,h命令将其复制并存入二个叫做保持缓存区的独特缓冲区内。第二条语句的意味是,当达到最终意气风发行后,G命令收取保持缓冲区的行,然后把它放回格局空间中,且追加到近些日子曾经存在于方式空间中的行的终极。在这里个例子中正是增多到结尾意气风发行。轻巧的话,任何带有test的行都被复制并追加到该公文的结尾。

保险和交流:h命令和x命令

$ sed -e '/test/h' -e '/check/x' example -----交流格局空间和保持缓冲区的内容。也正是把带有test与check的行交流。

  1. 脚本

Sed脚本是二个sed的下令事项清单,运转Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的指令特别申斥,在指令的最终不能够有别的空白或文本,固然在风流罗曼蒂克行中有多少个指令,要用分号分隔。以#千帆竞发的行为注释行,且不可能跨行。

  1. 小技巧

在sed的一声令下行中援用shell变量时要动用双引号,并不是平铺直叙所用的单引号。下边是三个根据name变量的内容来删除named.conf文件中zone段的台本:

name='zone "localhost"'

sed "/$name/,/};/d" named.conf 

Table of Contents

  1. awk简介

  2. awk命令格式和筛选

2.1. awk的语法有二种样式

2.2. 限令选项

  1. 形式和操作

3.1. 模式

3.2. 操作

  1. awk的碰着变量

  2. awk运算符

  3. 笔录和域

6.1. 记录

6.2. 域

6.3. 域分隔符

  1. gawk专项使用正则表明式元字符

  2. POSIX字符集

  3. 合作操作符(~)

  4. 相比表明式

  5. 范围模板

  6. 一个评释passwd文件有效性的例子

  7. 多少个实例

  8. awk编程

14.1. 变量

14.2. BEGIN模块

澳门各大游戏平台网站,14.3. END模块

14.4. 重定向和管道

澳门游戏平台打大全,14.5. 尺度语句

14.6. 循环

14.7. 数组

14.8. awk的内建函数

  1. How-to

  2. awk简介

awk是豆蔻梢头种编制程序语言,用于在linux/unix下对文件和数量进行拍卖。数据足以来自专门的工作输入、一个或七个文本,或此外命令的输出。它辅助客户自定义函数和动态正则表明式等先进功用,是linux/unix下的一个强硬编制程序工具。它在指令行中使用,但越来越多是用作脚本来使用。awk的处理公事和数码的章程是那样的,它逐行扫描文件,从第风度翩翩行到最一生机勃勃行,搜索相配的一定情势的行,并在此些行上实行你想要的操作。若无一点名管理动作,则把匹配的行展现到正规输出(荧屏卡塔尔(قطر‎,若无一点点超方式,则持有被操作所钦赐的行都被拍卖。awk分别代表其笔者姓氏的首先个字母。因为它的作者是三个人,分别是Ayr弗瑞德Aho、Brian Kernighan、PeterWeinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些恢宏。上边介绍的awk是以GUN的gawk为例的,在linux系统中已把awk链接到gawk,所以上面全体以awk举行介绍。

  1. awk命令格式和甄选

2.1. awk的语法有三种格局

awk [options] 'script' var=value file(s)

awk [options] -f scriptfile var=value file(s)

2.2. 发令选项

-F fs or --field-separator fs

本文由澳门网络娱乐游戏平台发布于操作系统,转载请注明出处:澳门游戏平台打大全linux shell必知必会sed、awk

相关阅读