AWK、SED、CUT及其他知识

AWK、SED、CUT及其他知识
AWK、SED、CUT及其他知识

本文命令已在AIX系统中验证。

AWK-扫描文件中每一行

逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕)

输出使用{print }

1,输出某一列,print $列号

awk ‘{print $1}’文件名输出文件中每一行的第一列

awk ‘{print $1 $3}’文件名输出文件中每一行的第一列和第三列

{print $0}与{print}不做限制,输出所有

2,对行内容转换,print 字符

awk '{print “A”}’文件名

将每一行内容使用A进行替换

awk '{print 5}' 文件名

将每一行内容使用5进行替换

数字不需引号,其余字符需要引号。

指定不同的分隔符,如分隔符不为空格使用-F指定

awk -F”:”‘{print $1 $3}’文件名

使用冒号作为新的分隔符。

awk -F'[:\t]' '{print $1,$3}' 文件名

使用冒号或空格作为分割符,其中\t 表示TAB键,\n表示换行、回车。

如需在输出时修改每一列信息

如修改为第一列XX 第二列XX 第三列XX

awk -F":" '{print "1st:" $1 "\t2nd:" $2 "\t3rd:"$3}' 文件名

表示在第一列前加上1st:第二列前加上2nd: 第三列前加上3st:

原文件内容

A:a:1

B:b:2

C:c:3

D:d:4

E:e:5

F:f:6

输出如下:

1st:A 2nd:a 3rd:1

1st:B 2nd:b 3rd:2

1st:C 2nd:c 3rd:3

1st:D 2nd:d 3rd:4

1st:E 2nd:e 3rd:5

1st:F 2nd:f 3rd:6

使用\n效果如下:

awk -F":" '{print "1st:" $1 "\n2nd:" $2 "\n3rd:"$3}' awk1

1st:A

2nd:a

3rd:1

1st:B

2nd:b

3rd:2

1st:C

2nd:c

3rd:3

1st:D

2nd:d

3rd:4

1st:E

2nd:e

3rd:5

1st:F

2nd:f

3rd:6

awk '/^(AA|BB)/' awk1

输出以A或B开始的行,^表示行开头,A和B可以使用词组,如AA|BB|CC,表示AA、BB、CC开头的行均被输出。

awk ‘/^[AB]/{print $2}’文件名

输出以A或B开始的行,只输出第2列,

该种输出方式只能一个单词,如ABC,表示以A、B、C开头的行均被输出。

awk -F: '{print NR ,$1}' awk1

输出是增加行号,NR 表示行号

awk -F: '$3~/[0-9]$/{print $1}' awk1

~表示匹配,匹配第三列,如果以数字结尾(0-9,$表示结尾),输出第一列。

awk -F: '$3~/[0-9]/{print $1}' awk1

awk -F: '$3~/^[0-9]/{print $1}' awk1

以上两句表示匹配以0-9开始的第三列。

awk -F: '$1=="b"||$2=="b"' awk1

如果第一列为b,或者第二列为b,打印该行,||表示“或”,&&表示“且”。

awk -F: '$1=="B"&&$2=="b"' awk1

数字无需引号,==表示等于,!=表示不等于,也可使用>、<

awk -F: '/A/{print $2}' awk1

如果行中有A字符,输出第二列

awk -F: '/A/{print $3+10}' awk1

如果行中有A字符,输出第三列,并在第三列结果加上10。如果输出结果为字符,加10后只输出10。

创建如下文件

name1

new york

teacher

name2

shanghai

doctor

name3

beijing

manager

该文件每三行为一条信息

将信息进行重新输出,三行输出到一行中。

awk 'BEGIN { FS="\n"; RS=""} {print $1 ","$2"," $3} ' awk2

name1,new york,teacher

name2,shanghai,doctor

name3,beijing,manager

FS="\n"表示每个字段由换行符作为分割符,RS=""记录分割符为””。

把输出结果放置为一行

awk '{printf("%s,",$1)}' awk2

awk '{if($1<$2) print $1}' awk3

如果第一列值小于第二列,输出第一列

查看ps –ef中的请求号

ps-ef|grep prodappl |awk '{print $2}'

将ps-ef|grep prodappl这个命令的第二列进行输出

查看系统中的用户名,用户名存在/etc/passwd文件中,信息以冒号为分割符,第一列为用户名。

cat /etc/passwd |awk -F: '{print $1}'

或者

awk -F: '{print $1}' /etc/passwd

SED

Sed不变更文件内容,将输出内容进行编辑再输出。

Sed 1d 文件名

将文件中第一行删除再输出,1表示第一行,d表示删除,s表示替换

Sed 1,5d 文件名

将文件中1-5行删除再输出。

sed '/A/d' awk1

将文件中含有A的行删除再输出,//表示搜索。d表示删除,p表示打印输出。

sed '/A/!d' awk1

!表示否定,表示不含A的删除,或者含A的不删除。

sed ‘/^$/d’ awk1

删除文件的空白行。^ 表开头,$ 表尾部,这两者之间没有任何字符,代表该行是一空白行。

新建文件awk4如下:

1

11

111

1111

11111

不显示三位数

sed '/[0-9]\{3\}/d' awk4

在样式[0-9]\{3\}中,\{3\} 表示要寻找的是3 个数字组成的字符串。

sed '/[0-9]\{3\}/p' awk4

sed使用p时会将不符合的也进行显示,需要添加-n加以限制。

sed –n '/[0-9]\{3\}/p' awk4

sed -n 's/1/2/p' awk4

s表示替换,将每一行中的1替换为2,但是每行只替换一次

sed -n 's/1/2/gp' awk4

g表示全局替换

sed 's/^.//' awk4

将每行开始的第一个字符替换成空。

^. 表示每行开始的第一个字符,

^…表示每行开始的三个字符。

…$ 表示每行结尾的三个字符

sed -n '/AAA/s/234/567/p' 文件名

将含有AAA字符的行中的234 替换成567 并输出。

sed -n '2,4s/B/567/p' 文件名

将第二至第四行中的B替换成567并输出。

sed -n '/A/,/D/s/B/567/p' 文件名

将含有A字符到D字符的(ABCD)的行中的B替换成567 并输出。

即含有A、或含有B、或含有C、或含有D的行中B替换成567

本文知识已在AIX系统中验证。

时间

date命令表示时间,用法可参考man date

$ date

Tue Apr 26 15:37:30 BEIST 2016

对时间进行格式化输出,如输出格式为年-月-日时:分:秒

$ date +%Y-%m-%d" "%H:%M:%S

2016-04-26 15:39:04

“ “表示在日期和时间之间增加一个空格

$ date +%Y%m%d

20160426

日期为+% 加格式

大写Y表示年,四位数

小写y表示年,两位数,后两位

小写m,表示月份,两位数0-12

小写d表示日期,两位数0-31

大写D表示具体日期,格式为月/日/年

大写H表示小时,0-24

小写h表示月份的英文,如四月显示Apr

大写M表示分钟,两位数0-59

大写S表示秒数,两位数0-59

小写r表示时分秒,格式如时(12小时):分:秒AM/PM 大写R表示时分,格式如时(24小时):分

date +%Y

date +%y

CUT命令

剪切内容.

cat 文件名| cut –c 5

读取文件,将每一行的第五个字符进行输出。

cat 文件名| cut –c 5

将每一行的5至8位置的字符输出。

C表示字符(character),b表示字节(byte)

cut -f "1 2 3" -d : /etc/passwd

将文件中第1,2,3列输出,并以冒号为分割符,f表示那几列,d表示分割符,d与f 需要搭配使用。

cut -f 1,4 -d : /etc/passwd

将第一列与第四列输出并以冒号为分割符

cut -f 1-2,4 -d : /etc/passwd

将1,2,4列输出并以冒号为分割符

其他知识

ps –ef >1.txt

将ps –ef的结果放入文件1.txt中,如不存在文件则新建文件,

>会覆盖已存在文件,

>>追加至已存在文件的最后。

脚本中需要执行命令

如将本机hostname赋值给某一变量,命令使用``包含,`为英文状态下键盘1左侧按键。

mname=`hostname`

表示将hostname这个命令输出的结果赋值给mname变量。

mtime=`date +%Y%m%d`

表示将date +%Y%m%d这个命令输出的结果赋值给mtime变量。

在脚本中使用mtime变量,${mtime}

Filename=${mtime}”.txt”

AIX系统基本命令

AIX系统基本命令 mkdir:用于创建目录 $ mkdir oracle $ ls oracle $ rm:用于删除文件或目录(rm –r 删除目录时目录内有内容,用-r一起删除)$ rm -r oracle $ ls $ mv:用于改变文件或目录名 $ mkdir ll $ ls ll $ mkdir kk $ ls kk ll $ mv ll kk $ ls kk $ cd kk $ ls ll $ cd:用于进入系统某一级目录中去 $ cd / $ pwd / $ cd /home/oracle $ pwd /home/oracle $ ls 功能:显示目录中的内容,列出当前目录中所有文件的文件名 参数说明: a:列出目录中所有文件 d:列出所有子目录 l:列出长格式文件信息 举例: ls –a:列出当前目录中的所有文件 $ ls -a #UNTITLED# .dt createdbscripts oracle . .dtprofile dead_letter smit.log .. .profile ll smit.script .TTauthority .sh_history make.log websm.log .Xauthority afiedt.buf mbox websm.script $ ls –l:显示文件的详细信息 $ ls -l

-rw------- 1 201 dba 11174 Sep 17 09:15 err*.log drwxr-xr-x 3 201 dba 512 Sep 22 10:21 tra*.log -rw-r--r-- 1 201 dba 8971 Sep 20 11:08 smit.log -rw-r--r-- 1 201 dba 5437 Sep 20 11:08 smit.script -rw-r--r-- 1 201 system 1682 Sep 02 15:18 websm.log -rw-r--r-- 1 201 system 21441 Sep 02 15:10 websm.script (还有ls –rtl,ls –lt 等相关类似命令) $ date 功能:显示当前日期和时间,超级用户可以进行修改 举例:$ date Mon Sep 22 11:22:33 BEIST 2013 $ wc 功能:计算文件中的行数、字数和字符数 参数说明: c:计算字符数 l:计算行数 w:计算字数 举例: # wc profile 13 53 381 profile | | | 行数字数字符数 $ wc smit.log 422 1162 8971 smit.log $ who 功能:列出当前系统注册的用户 举例:$who am i-- 列出当前系统使用者身份 $ who oracle lft0 Sep 22 09:05 oracle pts/0 Sep 22 10:17 (192.168.100.79) oracle pts/4 Sep 22 09:05 (:0.0) $ who am i oracle pts/0 Sep 22 10:17 (192.168.100.79) $ finger 显示当前登陆到系统中的用户的信息 举例: # finger Login Name TTY Idle When Site I nfo oracle ??? *l0 2:02 Mon 09:05 oracle ??? p4 1:59 Mon 09:05 root ??? p0 Mon 11:06 # finger oracle

wc详解

wc命令参数及用法详解 wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 语法:wc [选项] 文件... 说明:该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。下面让我们来简单的看一下其支持的参数及其代表的含义。 参数及含义 举例 demo.txt Welcome to https://www.360docs.net/doc/8e1697514.html, 欢迎来到这里 wc -cwl demo.txt #2 4 39 demo.txt 顺序依次是l w c 强调 这里面大家要注意一点。m和c参数是不能共存的,只有一个可以起作用,看哪个参数在后面。例如: wc -c demo.txt #39 demo.txt wc -m demo.txt #33 demo.txt wc -cml demo.txt #2 33 demo.txt wc -cm demo.txt #33 demo.txt 结果为m的值哦

举一反三 需要把一个文件的行数存在另一个文件里。可是这个wc还会同时输出文件名。咋办?简单,用管道处理一下OK啦 wc -l demo.txt | awk 'BEGIN{FS=" "}{print $1}' 这样,我们就把想要的文件行数给取到了,至于存在另一个文件里,我们可以把awk的print结果重定向到文件。 重要提示 用wc处理文件的时候,一定要在文件末尾存在换行符,否则统计的行数是不正确的。当然多几个换行符是没有问题的。 echo "UNIX" | wc -l # 1 echo -n "UNIX" | wc -l # 0 echo "UNIX\n\n\n" | wc -l # 1 今天看到的命令是:ls -l | wc -l 用来统计当前目录下的文件数

员工转正申请书范文【三篇】

员工转正申请书范文【三篇】 尊敬的领导: 您好! XXX员工XXX,于20XX年XX月XX日加入公司,根据公司的需要,当前担任XXX一职,主要负责XXXX工作。本人做事具有较强的责任心 和进取心,对人热情,热爱现从事的人事工作。从我参加工作到现在,已有将近七个年头,所以,在之前的工作中,锻炼了我不惧怕困难与 团队合作的精神。但来到XXXX,这里的工作与环境又是一个新的开始,在领导的严格要求下,我的工作得到了提升,在同事的协助下,我的 工作得以顺利展开。现将这段时间的工作情况简要总结如下: 1、初到公司时,本人仅仅从公司简介以及同事们的口述中了解公司,对公司的理解仅仅是皮毛的话,那么随着时间的推移,我对公司 也有了更为深刻的了解。从一开始对工作的没有压力,到逐渐的感到 肩上的责任性,在这其中,我持续的学习与请教,就好比一辆新车, 在与公司的持续的实行磨合。到当前为止,这项工作我基本上能够掌握,但是我知道还有很多地方需要改善,还能够做得更好,我相信, 我也有那个信心,随意时间的推移,我会从这份工作中得到成长,同 时我也会把这份工作做得更加完善。 2、在本部门的工作中,我勤奋工作,获得了本部门领导和同事的 认同。当然,在工作中我也出现了一些小的差错和问题,部门领导也 即时给我指出,促动了我工作的成熟性。跟本部门的同事相处中也非 常融洽,有什么问题大家也都能够齐心协心,相互协助,所以,来到 这里,让我有种宾至如归的感觉,我相信,在一个团结协作的团队, 一定会是个强大的团队,所以,我为自己能加入这个团队感到荣幸与 骄傲。 3、在公司的领导下,我会更加严格要求自己,在作好本职工作的 同时,积极团结同事,任何事情沟通都是第一位的。在工作中,要持

awk命令

什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg 和(Brain)Kernighan。正是这三个人创造了awk---一个优秀的样式扫描与处理工具。 AWK的功能是什么?与sed和grep很相似,awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk 的确拥有自己的语言:awk程序设计语言,awk的三位创建者已将它正式定义为:样式扫描和处理语言。 为什么使用awk? 即使如此,你也许仍然会问,我为什么要使用awk? 使用awk的第一个理由是基于文本的样式扫描和处理是我们经常做的工作,awk所做的工作有些象数据库,但与数据库不同的是,它处理的是文本文件,这些文件没有专门的存储格式,普通的人们就能编辑、阅读、理解和处理它们。而数据库文件往往具有特殊的存储格式,这使得它们必须用数据库处理程序来处理它们。既然这种类似于数据库的处理工作我们经常会遇到,我们就应当找到处理它们的简便易行的方法,UNIX有很多这方面的工具,例如sed 、grep、sort以及find等等,awk是其中十分优秀的一种。 使用awk的第二个理由是awk是一个简单的工具,当然这是相对于其强大的功能来说的。的确,UNIX有许多优秀的工具,例如UNIX天然的开发工具C语言及其延续C++就非常的优秀。但相对于它们来说,awk完成同样的功能要方便和简捷得多。这首先是因为awk提供了适应多种需要的解决方案:从解决简单问题的awk命令行到复杂而精巧的awk程序设计语言,这样做的好处是,你可以不必用复杂的方法去解决本来很简单的问题。例如,你可以用一个命令行解决简单的问题,而C不行,即使一个再简单的程序,C语言也必须经过编写、编译的全过程。其次,awk本身是解释执行的,这就使得awk程序不必经过编译的过程,同时,这也使得它与shell script程序能够很好的契合。最后,awk本身较C语言简单,虽然awk吸收了C语言很多优秀的成分,熟悉C语言会对学习awk有很大的帮助,但awk 本身不须要会使用C语言——一种功能强大但需要大量时间学习才能掌握其技巧的开发工具。 使用awk的第三个理由是awk是一个容易获得的工具。与C和C++语言不同,awk只有一个文件(/bin/awk),而且几乎每个版本的UNIX都提供各自版本的awk,你完全不必费心去想如何获得awk。但C语言却不是这样,虽然C语言是UNIX天然的开发工具,但这个开发工具却是单独发行的,换言之,你必须为你的UNIX版本的C语言开发工具单独付费(当然使用D版者除外),获得并安装它,然后你才可以使用它。

ls -l命令详解

有几个字段老是记不住,就记载这里吧 ls -l 列表信息详解 我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会得到一个详细的文件和目录名列表.这个列表包含了文件的属性,所属用户,所属组,创建时间,文件大小等等信息.这些信息到底是什么意思呢?有很多初学者对这些不太了解,因此想详悉讲解一下用ls -l命令得到的文件列表每一个字段的意思 以笔者电脑的/root目录为例: [root@gucuiwen root]# ll 总用量 4055 -rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg drwxr-xr-x 2 root root 208 12月 1 13:50 babylinux -rw-r--r-- 1 root root 1474560 11月 25 15:02 babylinux.img -rw-r--r-- 1 root root 26829 11月 25 15:10 babylinux.png lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png -> disk1.png -rw-r--r-- 1 root root 3209 11月 26 12:07 disk1.png -rw-r--r-- 1 root root 692 11月 26 13:16 disk2.png -rw-r--r-- 1 root root 718 11月 26 13:30 disk3.png drwx------ 8 root root 392 1月 4 08:40 evolution -rwxr-xr-x 1 root root 13695 11月 30 16:51 fangkuai.sh drwxr-xr-x 2 root root 208 12月 28 12:06 FreeBSD -rw-r--r-- 1 root root 2315 11月 25 17:19 getMBR.png brw-r----- 1 root root 3, 1 1月 4 11:06 hda1 drwxr-xr-x 2 root root 296 12月 31 11:53 htmls -rw-r--r-- 1 root root 21369 11月 24 18:12 install.log -rw-r--r-- 1 root root 3024 11月 24 18:12 install.log.syslog -rw-r--r-- 1 root root 293 1月 4 10:51 ls.txt -rw-r--r-- 1 root root 2237702 11月 25 15:09 magick.miff -rw-r--r-- 1 root root 13493 11月 25 17:31 mbr1.png -rw-r--r-- 1 root root 8123 11月 25 17:42 mbr2.png -rw-r--r-- 1 root root 512 11月 30 16:10 mbr.dat -rw-r--r-- 1 root root 64512 11月 26 15:33 partition.doc -rw-r--r-- 1 root root 49887 11月 26 15:32 partition.sxw -rw-r--r-- 1 root root 1541 12月 18 13:14 passwd -rw-r--r-- 1 root root 46320 11月 25 17:28 Screenshot-1.png -rw-r--r-- 1 root root 44145 11月 25 17:32 Screenshot-2.png -rw-r--r-- 1 root root 43732 11月 25 17:13 Screenshot.png drwxr-xr-x 3 root root 72 1月 4 10:49 test -rw-r--r-- 1 root root 0 12月 18 10:44 tset crw-r----- 1 root root 4, 65 1月 4 11:08 ttyS1

Linux awk命令详解

Linux awk命令详解 AWK介绍 0.awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk。 1.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。完整的awk脚本通常用来格式化文本文件中的信息。 2.三种方式调用awk 1) awk [opion] 'awk_script' input_file1 [input_file2 ...] awk的常用选项option有; ① -F fs : 使用fs作为输入记录的字段分隔符,如果省略该选项,awk使用环境变量IFS的值 ② -f filename : 从文件filename中读取awk_script ③ -v var=value : 为awk_script设置变量 2) 将awk_script放入脚本文件并以#!/bin/awk -f 作为首行,给予该脚本可执行权限,然后在shell下通过键入该脚本的脚本名调用之。 3) 将所有的awk_script插入一个单独脚本文件,然后调用: awk -f awk脚本文件input_file(s) 3. awk的运行过程 1) awk_script的组成: ① awk_script可以由一条或多条awk_cmd组成,两条awk_cmd之间一般以NEWLINE分隔 ② awk_cmd由两部分组成: awk_pattern { actions } ③ awk_script可以被分成多行书写,必须确保整个awk_script被单引号括起来。 2) awk命令的一般形式: awk ' BEGIN { actions } awk_pattern1 { actions } ............ awk_patternN { actions } END { actions } ' inputfile 其中BEGIN { actions } 和END { actions } 是可选的。 3) awk的运行过程: ①如果BEGIN 区块存在,awk执行它指定的actions。 ② awk从输入文件中读取一行,称为一条输入记录。(如果输入文件省略,将从标准输入读取) ③awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。字段分隔符使用shell环境变量IFS或由参数指定。 ④把当前输入记录依次与每一个awk_cmd中awk_pattern比较,看是否匹配,如果相匹配,就执行对应的actions。如果不匹配,就跳过对应的actions,直到比较完所有的awk_cmd。 ⑤当一条输入记录比较了所有的awk_cmd后,awk读取输入的下一行,继续重复步骤③和④,这个过程一

正则表达式

正则表达式
目录
1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在 C 语言中使用正则表达式
1. 引言
以前我们用 grep 在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义. 其实 grep 还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合 xxxxx@xxxx.xxx 模式的字符串(也就是 email 地址),要求 x 字符可以是字母,数字,下划 线,小数点或减号,email 地址的每一部分可以有一个或多个 x 字符,例如 abc.d@https://www.360docs.net/doc/8e1697514.html,, 1_2@987-6.54,当然符合这个模式的不全是合法的 email 地址,但至少可以做一次初步筛选, 筛掉 a.b,c@d 等肯定不是 email 地址的字符串.再比如,找出所有符合 yyy.yyy.yyy.yyy 模 式的字符串(也就是 IP 地址),要求 y 是 0-9 的数字,IP 地址的每一部分可以有 1-3 个 y 字 符. 如果要用 grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串 呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息: 字符类(Character Class):如上例的 x 和 y,它们在模式中表示一个字符,但是取 值范围是一类字符中的任意一个. 数量限定符(Quantifier): 邮件地址的每一部分可以有一个或多个 x 字符,IP 地址 的每一部分可以有 1-3 个 y 字符 各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符@和. 隔开,IP 地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述.为 了表示位置关系,还有位置限定符(Anchor)的概念,将在下面介绍.
规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一 起表示一个模式,这就是正则表达式(Regular Expression).例如 email 地址的正则表达式 可以写成[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+,IP 地址的正则表达式可以 写成[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.下一节介绍正则表达式的语法, 我们先看看正则表达式在 grep 中怎么用.例如有这样一个文本文件 testfile:
192.168.1.1
第 1 页 共 10 页

Linux awk命令使用详解

Linux awk命令使用详解 简单介绍一下,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大,这是我们玩linux的必备基本功,若要对其身世有更详尽的了解,自行搜索即可。对于工具的知识,笔者尽量将每个知识点的简要说明,并给出实例。 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 用法: awk [options] 'scripts' file1,file2... awk [options] 'pattern {action}' file1,file2... options是awk的支持的选项,譬如-F -v等; scripts是其处理脚本,包含模式pattern和动作action(模式和动作的关系一般为,模式负责确定有效字段,动作负责对其处理) 一、print的简单使用

创建一个简单的测试文件如下: [root@mos download]# cat demo.txt Welcome to mos blog. This is a test file. 例:打印整行: $0 [root@mos download]# awk '{print $0}' demo.txt Welcome to mos blog. This is a test file. 例:打印每行的最后一个字段: $NF [root@mos download]# awk '{print $NF}' demo.txt blog. file. 例:打印第二个字段: $2 [root@mos download]# awk '{print $2}' demo.txt to is 例:打印每行的倒数第二个字段,并在其后打印OK

CentOS自动化运维常用命令-学习笔记

否则打开vim编辑器。 5. id tom &>/dev/null && echo "Hi tom" || echo "No such user" 如果id tom 执行成功,则说明用户存在,屏幕将显示Hi,tom 否则显示No such.. 3.3.3作业控制技巧: # vim & # jobs # fg 1 通过fg<编号>的形式将进程再次调回到前台执行; 3.3.4 花括号{}的使用技巧: # echo {a,b,c} 通过花括号扩展可以生成命令行或脚本所需要的字串 # echo user{1,5,8} # user1 user5 user8 # echo {0..10} #1 2 ..10 # echo {0..10 ..2} # 0 2 4..10 # echo a{2..-1} #a2 a1 ..a-1 # mkdir /tmp/dir{1..5} #ls -ld /tmp/dir{1,2,3} #chmod 777 /tmp/dir{1,2} #kill -9 {4603,8345,11574,12257} 3.4变量 3.4.1自定义变量: 建议统一使用大写或者首字母大写。默认NAME的值是可以被修改的,但可以通过typeset 为这个变量添加只读属性来防止误操作,如果需要限定变量值可以设置为整数,亦可以用typeset添加属性; NAME=tomcat echo $NAME typeset -r NAME #添加readonly只读属性 declare INT_NUMBER #预先定义一个变量,但是暂时不给赋值

typeset -in INT_NUMBER #设置整数变量 read P_NUMBER #回车后输入要赋值给P_NUMBER的值echo $P_NUMBER read -p "Please input a number:"P_NUMBER # set #查看当前系统中设置的所有的变量和值 unset P_NUMBER #删除变量; 3.4.2 变量的使用范围 使用name=[value]的形式定义的变量默认仅在当前shell 中有效,子进程不会集成这样的变量.使用export 命令会将变量放入环境中,这样的进程会从父进程哪里继承环境,export 可以直接定义环境变量并赋值. TEST=pass echo $TEST bash #在当前shell下开启新进程bash echo $TEST #查看变量值为空 exit export TEST #将已有用户变量添加至环境 export NAME=tom # 直接定义环境变量 3.4.3 环境变量 Bash预设定了很多环境变量,可以直接调用这些变量; Bash手册: BASHPID 当前bash进程的进程号 GROUPS 当前用户所属的组ID号 HOSTNAME 当前主机的主机名称 PWD 当前工作目录 OLDPWD 前一个工作目录 RANDOM 0 - 32767之间的随机数 UID 当前用户的ID号码 HISTSIZE 命令历史的记录条数 HOME 当前用户的家目录

linux下cat命令详解1

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用 1.命令格式: cat [选项] [文件]... 2.命令功能: cat主要有三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为一个文件:cat file1 file2 > file 3.命令参数: -A, --show-all 等价于-vET -b, --number-nonblank 对非空输出行编号 -e 等价于-vE -E, --show-ends 在每行结束处显示$ -n, --number 对输出的所有行编号,由1开始对所有输出的行数编号 -s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行 -t 与-vT 等价 -T, --show-tabs 将跳格字符显示为^I -u (被忽略) -v, --show-nonprinting 使用^ 和M- 引用,除了LFD 和TAB 之外 4.使用实例: 实例一:把log2012.log 的文件内容加上行号后输入log2013.log 这个文件里 命令: cat -n log2012.log log2013.log 输出: 代码如下: [root@localhost test]# cat log2012.log 2012-01 2012-02 ======[root@localhost test]# cat log2013.log 2013-01 2013-02

script_start

#!/bin/csh setenv GENESIS_EXPOSE_MODE YES 参见0203.pdf第二章环境变量的说明。作用在于为了方便运行于某些X终端上 # Define correct temp. dir. depending on env. vars.定义临时目录,随环境变量而变 if ($?GENESIS_TMP) then set TMP = $GENESIS_TMP else if ($?GENESIS_DIR) then set TMP = $GENESIS_DIR/tmp else set TMP = D:/genesis/tmp endif # Detect current operating system.提取当前操作系统 set CURR_OS = `uname -s` uname –s 为UNIX/Linux命令,用来取得当前操作系统的名称 # Set the INFO alias and the tmp INFO file. 设置INFO临时文件和INFO的别名命令DO_INFO set IFILE = $TMP/do_info.$$ $$为脚本运行随机产生的唯一的进程号,作用在于不会与其他文件名同名 alias DO_INFO 'COM info,out_file=$IFILE,write_mode=replace,args= \!:* ; source $IFILE; rm $IFILE' 作用在于用DO_INFO替代繁杂的info命令过程,info命令为Genesis提供的提取相关信息的指令,比如提取拼版数据等Info命令参见0204.pdf第六章

AIX常用命令

AIX常用命令 目录操作 命令名功能描述使用举例 mkdir 创建一个目录mkdir dirname rmdir 删除一个目录rmdir dirname mvdir 移动或重命名一个目录mvdir dir1 dir2 cd 改变当前目录cd dirname pwd 显示当前目录的路径名pwd ls 显示当前目录的内容ls -la dircmp 比较两个目录的内容dircmp dir1 dir2 文件操作 命令名功能描述使用举例 cat 显示或连接文件cat filename pg 分页格式化显示文件内容pg filename more 分屏显示文件内容more filename od 显示非文本文件的内容od -c filename cp 复制文件或目录cp file1 file2 rm 删除文件或目录rm filename mv 改变文件名或所在目录mv file1 file2 ln 联接文件ln -s file1 file2

find 使用匹配表达式查找文件find . -name "*.c" -print file 显示文件类型file filename 选择操作 命令名功能描述使用举例 head 显示文件的最初几行head -20 filename tail 显示文件的最后几行tail -15 filename cut 显示文件每行中的某些域cut -f1,7 -d: /etc/passwd colrm 从标准输入中删除若干列colrm 8 20 file2 paste 横向连接文件paste file1 file2 diff 比较并显示两个文件的差异diff file1 file2 sed 非交互方式流编辑器sed "s/red/green/g" filename grep 在文件中按模式查找grep "^[a-zA-Z]" filename awk 在文件中查找并处理模式awk '{print $1 $1}' filename sort 排序或归并文件sort -d -f -u file1 uniq 去掉文件中的重复行uniq file1 file2 comm 显示两有序文件的公共和非公共行comm file1 file2 wc 统计文件的字符数、词数和行数wc filename nl 给文件加上行号nl file1 >file2 安全操作 命令名功能描述使用举例

Shell中的grep、awk和sed的常用命令和语法

常用的grep选项有: -c 只输出匹配行的计数。 -i 不区分大小写(只适用于单字符)。 -h 查询多文件时不显示文件名。 -l 查询多文件时只输出包含匹配字符的文件名。 -n 显示匹配行及行号。 -s 不显示不存在或无匹配文本的错误信息。 -v 显示不包含匹配文本的所有行。 $ grep“sort”*.doc ( #在当前目录下所有. d o c文件中查找字符串”s o r t”) $ grep “sort it” * (#或在所有文件中查询单词”sort it”) 2.行匹配 $ grep -c “48″ data.f $ 4 (#g r e p返回数字4,意义是有4行包含字符串”4 8″。) $ grep “48″ data.f (#显示包含”4 8″字符串的4行文本) 7. 查询空行,查询以某个条件开头或者结尾的行。 结合使用^和$可查询空行。使用- n参数显示实际行数 [root@mypc oid2000]# grep -n “^$” 111.txt (返回结果 2: #说明第二行是空行) [root@mypc oid2000]# grep -n “^abc” 111.txt (#查询以abc开头的行) [root@mypc oid2000]# grep -n “abc$” 111.txt (#查询以abc结尾的行) 8. 匹配特殊字符,查询有特殊含义的字符,诸如$ . ‘ ” * [] ^ | \ + ? ,必须在特定字符前加\。 [root@mypc oid2000]# grep “\.” 111.txt (#在111.txt中查询包含”.”的所有行) [root@mypc oid2000]# grep “my\.conf” 111.txt (#查询有文件名my. c o n f的行) 9. 目录的查询 [root@mypc oid2000]# ls -l |grep “^d” (#如果要查询目录列表中的目录) [root@mypc oid2000]# ls -l |grep “^d[d]“ (#在一个目录中查询不包含目录的所有文件) [root@mypc]# ls -l |grpe “^d…..x..x” (#查询其他用户和用户组成员有可执行权限的目录集合) Awk的常用命令语法 awk [-F filed-s eparator] “commands” input-file(s) [ - F域分隔符]是可选的,a w k使用空格作为缺省的域分隔符 1.2保存a w k输出 $ awk ‘{print $0}’ input-files > out-files (#重定向保存输出) $ awk ‘{print $0}’ input-files | tee out-files (#使用t e e命令,输出到文件的同时输出到屏幕) 1.3 常用的awk命令举例 [root@mypc /]# awk ‘$0 ~ /user/’ /etc/passwd (#如果某域含有user就将该行打

awk命令详解

常用awk命令(转)

awk 用法:awk ' pattern {action} ' 变量名含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输入域分隔符,默认为一个空格 RS 输入记录分隔符 NF 当前记录里域个数 NR 到目前为止记录数 OFS 输出域分隔符 ORS 输出记录分隔符 1、awk '/101/' file 显示文件file中包含101的匹配行。 awk '/101/,/105/' file awk '$1 == 5' file awk '$1 == "CT"' file 注意必须带双引号 awk '$1 * $2 >100 ' file awk '$2 >5 && $2<=15' file 2、awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。 awk '/101/ {print $1,$2 + 10}' file 显示文件file的匹配行的第一、二个域加10。 awk '/101/ {print $1$2}' file awk '/101/ {print $1 $2}' file 显示文件file的匹配行的第一、二个域,但显示时域中间没有分隔符。 3、df | awk '$4>1000000 ' 通过管道符获得输入,如:显示第4个域满足条件的行。 4、awk -F "|" '{print $1}' file 按照新的分隔符“|”进行操作。 awk 'BEGIN { FS="[: \t|]" } {print $1,$2,$3}' file 通过设置输入分隔符(FS="[: \t|]")修改输入

linux中grep命令详解

grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同! 正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vi grep ,awk ,sed 等都支持正则表达式. 1基础正则表达式 grep 工具,以前介绍过。 grep -[acinv] '搜索内容串' filename -a 以文本文件方式搜索 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便输出行号 -v 反向选择,即找没有搜索字符串的行 其中搜索串可以是正则表达式! 1 搜索有the的行,并输出行号 $grep -n 'the' regular_express.txt 搜索没有the的行,并输出行号 $grep -nv 'the' regular_express.txt

2 利用[]搜索集合字符 [] 表示其中的某一个字符,例如[ade] 表示a或d或e woody@xiaoc:~/tmp$ grep -n 't[ae]st' regular_express.txt 8:I can't finish the test. 9:Oh! the soup tast e good! 可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。 比如搜索oo前没有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串 woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt 2:apple is my favorite foo d. 3:Foo tball game is not use feet only. 18:google is the best too ls for search keyword. 19:go ooo oogle yes! [] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符。当然也可以配合^来排除字符。 搜索包含数字的行 woody@xiaoc:~/tmp$ grep -n '[0-9]' regular_express.txt 5:However ,this dress is about $ 3183 dollars.

Shell中的grep awk和sed的常用命令和语法

Shell中的grep、awk和sed的常用命令和语法 Shell中的grep、awk和sed的常用命令和语法 ——oid2000收集整理 Grep的常用命令语法 1. 双引号引用和单引号引用 在g r e p命令中输入字符串参数时,最好将其用双引号括起来。例如:―m y s t r i n g‖。这样做有两个原因,一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串,例如:―jet plane‖,如果不用双引号将其括起来,那么单词p l a n e将被误认为是一个文件,查询结果将返回―文件不存在‖的错误信息。 在调用变量时,也应该使用双引号,诸如:g r e p―$ M Y VA R‖文件名,如果不这样,将 没有返回结果。 在调用模式匹配时,应使用单引号.[root@mypc ]# echo `grep 123 111.txt` (#注意是反单引号) 2. 常用的g r e p选项有: -c 只输出匹配行的计数。 -i 不区分大小写(只适用于单字符)。 -h 查询多文件时不显示文件名。 -l 查询多文件时只输出包含匹配字符的文件名。 -n 显示匹配行及行号。 -s 不显示不存在或无匹配文本的错误信息。 -v 显示不包含匹配文本的所有行。 3. 特殊的——在多个文件中进行查询 $ grep "sort"*.doc ( #在当前目录下所有. d o c文件中查找字符串―s o r t‖)

$ grep "sort it" * (#或在所有文件中查询单词―sort it‖) 接下来的所有示例是指在单个文件中进行查询 4. 行匹配 $ grep -c "48" data.f $ 4 (#g r e p返回数字4,意义是有4行包含字符串―4 8‖。) $ grep "48" data.f (#显示包含―4 8‖字符串的4行文本) 5. 显示满足匹配模式的所有行行数: [root@mypc oid2000]# grep -n 1234 111.txt 1:1234 3:1234ab 6. 精确匹配 [root@mypc oid2000]# grep "1234\>" 111.txt 1234 7. 查询空行,查询以某个条件开头或者结尾的行。 结合使用^和$可查询空行。使用- n参数显示实际行数 [root@mypc oid2000]# grep -n "^$" 111.txt (返回结果2: #说明第二行是空行) [root@mypc oid2000]# grep -n "^abc" 111.txt (#查询以abc开头的行) [root@mypc oid2000]# grep -n "abc$" 111.txt (#查询以abc结尾的行) 8. 匹配特殊字符,查询有特殊含义的字符,诸如$ . ' " * [] ^ | \ + ? ,必须在特定字符前加\。[root@mypc oid2000]# grep "\." 111.txt (#在111.txt中查询包含―.‖的所有行) [root@mypc oid2000]# grep "my\.conf" 111.txt (#查询有文件名my. c o n f的行) 9. 目录的查询 [root@mypc oid2000]# ls –l |grep ―^d‖ (#如果要查询目录列表中的目录) [root@mypc oid2000]# ls –l |grep ―^d[d]‖(#在一个目录中查询不包含目录的所有文件) [root@mypc]# ls –l |grpe ―^d…..x..x‖ (#查询其他用户和用户组成员有可执行权限的目录集合) 10.排除自身

awk调用shell命令

awk调用shell命令 在awk内部可利用管道和getline函数来调用shell命令,并可得到返回的具体结果,进行相应处理。例子如下: 1) { while ( ("ls" | getline) >0 ) print } 输出当前目录下的所有文件,并打印到标准输出上。| 是管道,getline依次得到每一行的输出,赋值给$0,print打印到标准输出上 2) 如果希望将输出赋值到另外一个变量中,而不是覆盖$0,可这样改写: { while ( ("ls" | getline name) >0 ) print name } 3) system命令可以把awk内部的变量传递到外面使用,比如: { system("echo ", $1) } 打印$1的内容 getline为awk所提供的输入指令. 其语法如下: 语法由何处读取数据数据读入后置于 getline var< file 所指定的file 变量var(var省略时,表示置于$0) getline var pipe 变量变量var(var省略时,表示置于$0) getline一次读取一行数据, 若读取成功则return 1, 若读取失败则return -1, 若遇到文件结束(EOF), 则return 0; 本程序使用getline所return 的数据来做为while 判断循环停止的条件,某些awk版本较旧,并不容许使用者改变$0 之值. 这种版的awk执行本程序时会产生Error, 读者可于getline 之后置上一个变量(如此, getline读进来的数据便不会被置于$0 ), 或直接改用gawk便可解决. awk提供与UNIX 用法近似的pipe, 其记号亦为"|". 其用法及含意如下: awk程序中可接受下列两种语法: [a. 语法] awk output 指令| "Shell 接受的命令" ( 如: print $1,$2 | "sort -k 1" ) [b. 语法] "Shell 接受的命令" | awk input 指令 ( 如: "ls " | getline) 注: awk input 指令只有getline一个. awk output 指令有print, printf() 二个.

相关主题
相关文档
最新文档