ps -ef|grep  oracleepprod |grep -v grep|awk ' { print $2 }'|xargs kill -9

unix: 指定行 输入文字

###

$ cat 1
aaa

## add print before aaa ,选取开头是aaa的行,加入以下行道aaa的行之前 #####
awk '/^aaa/{print "export TESTGJS=D605C35198D2CA085E9C6FA7D2DF69F3;"}1' 1
export TESTGJS=D605C35198D2CA085E9C6FA7D2DF69F3;
aaa
## add export.. before aaa #####
awk '/^aaa/{print "export ..."}1' 1
export ...
aaa

###选取某一行是None的行,前面加入export

awk '/None/{print "         export ..."}1' setogg.sh.peng > 1

#####awk:
#####awk '{gsub(/a..e/,"替换内容或为空");print}' 文件名
####同上,替换项 写成空字符串就能实现删除功能。

awk '{gsub(/table/,"##table");print}'  $OGG_BIN/dirprm/p_test.prm

Shell编程-awk 

简介

awk 是一种对立的编程语言,集成于所有UNIX/Linux中,这个名字是它创建者的名字首字母组成的 Alfred Aho,Peter Weinberger, and Brian Kernighan。

awk的基本语法

普通模式

awk '/pattern/{action}' files

其中patter是一个正则表达式,action又是一系列命令,对于满足匹配的文本执行一些动作,files表示待操作的文件,如果不指定,则输入是STDIN。如果不指定pattern,则对所有文件的每一行都执行action。

表达式模式

当在awk中使用比较操作符时,使用下面的语法模式,详见后面。

awk '(expression){action}' files

有如下一个示例文件

zdd.txt包含如下内容
Fruit Price/lbs
Banana 0.89
Paech 0.79
Kiwi 1.50
Pineapple 1.29
Apple 0.99 显示一个文件的所有行 awk '{ print ; }' zdd.txt 分号表示命令结束,这个例子没有pattern,只有action 域编辑 awk自动将读入的行分割成域(field),域是由一个或多个分隔符分割开的字符集,缺省的分隔符是tab和空格,访问域可以用$,$, ... $n的形式,域都是从1开始的,而$0表示整个行(以行本来的面目呈现) 格式化输出水果及价格 awk '{ printf "%-15s %s\n", $1, $2 ;}' zdd.txt 输出如下 Fruit Price/lbs
Banana 0.89
Paech 0.79
Kiwi 1.50
Pineapple 1.29
Apple 0.99 使用其他的域分隔符 awk的-F参数可以制定其他的域分隔符,比如下面的代码将打印D echo A:B:C:D | awk -F: '{print $4}' 多个命令同时执行 在价格高于1美元的水果后面加* 以引起注意,这里包含了两个模式和动作对,直接书写即可,不必像sed那样加-e参数 awk '/[1-9]\.[0-9][0-9]$/ { print $0, "*"} /0\.[1-9][1-9]/ {print ;}' zdd.txt 输出如下 Banana 0.89
Paech 0.79
Kiwi 1.50 *
Pineapple 1.29 *
Apple 0.99
bash-3.2$ 比较操作 awk中可以执行的比较操作有
<
>
<=
>=
!=
value ~ /pattern/
value !~ /pattern/ 比较操作基本语法 awk '(expression){action}' files 其中expression是一个比较表达式,通常将其用括弧括起来。 在价格大于1美元的水果后面打印expensive awk '$2 >= 1.0 { printf "%s\t%s\n", $0, "Expensive" ; }' zdd.txt 输出 Fruit Price/lbs Expensive
Kiwi 1.50 Expensive
Pineapple 1.29 Expensive 复合表达式 可以使用&&或||连接多个表达式,表达式用()扩起
(expr1) && (expr2)
(expr1) ||(expr) next命令
看一个例子
awk '
$ <= { printf "%s\t%s\n",$,"REORDER" ; }
$ > { print $ ; }
' zdd.txt
这个命令的执行过程如下
() 读入一行,检查价格是否小于等于75,如果为真,则打印出REORDER
() 检查该行是否大于75,如果大于则直接打印
() 处理下一行
可见如果条件()满足,则不必再判断条件()了,如果避免这个多余的操作呢?使用next即可
awk '
$ <= { printf "%s\t%s\n",$,"REORDER" ; next ; }
$ > { print $ ; }
' zdd.txt BEGIN和END 基本与法 awk '
BEGIN { actions }
/pattern/ { actions }
/pattern/ { actions }
END { actions }
' files 注意BEGIN对应的模式必须是第一个模式,而END对应的模式必须是最后一个模式。这两者都不参与文本行的处理,只是做一些初始化及善后工作。 BEGIN可以用来打印表头或者列名等,如下 复制代码
BEGIN{
-F":"
printf "----------------------------------------------------------------\n"
printf "%-20s%-16s Jan | Feb | Mar |Total Donated\n ","NAME","PHONE"
printf "----------------------------------------------------------------\n"
} 复制代码 以STDIN作为输入
打印文件名及大小,在ls命令的输出中,文件名位于第9列,而大小位于第5列
ls -l | awk '{ printf "%15s%15s\n", $9, $5}'
ipck
ipcrm.exe
ipcs.exe
join.exe
kill.exe
less.exe
lessecho.exe
lesskey.exe
link.exe
lkbib.exe
ln.exe
locate.exe
login.exe
logname.exe
lookbib.exe
lpr.exe
ls.exe
makeinfo.exe
man.exe
man2dvi
man2html.exe
manlint 流控制 if 基本格式 if (expression1) {
action1
} else if (expression2) {
action2
} else {
action3
} 一个例子,根据每行的特征字,在行末加注释。 复制代码
awk '{
print "%s\t", $;
if ($ ~ /d/) {
print "Directory\n";
}
else if ($NF ~ /\.pl/){
print "Perl script\n";
}
else if ($NF ~ /\.bcp/) {
print "BCP file\n";
}
else {
print "\n";
}
}' 复制代码 while for awk中的for与C语言中的for类似。 awk '{
for (x = ; x <= NF; x++){
printf "%s ", $x;
}
print "\n";
}' input_file ; 特殊技巧 NR==FNR 这条语句只有在输入是多个文件的时候才有意义,用来判断当前正在处理第一个文件。 NR 处理过的文件行数,多个文件累加。 FNR 处理过的文件行数,仅限当前文件。 所以,NR >= FNR。看一个例子 #cat a
张三|
李四| #cat b
|
|
|
| 想要得到的结果是将用户名,帐号和金额在同一行打印出来,如下: 张三||
张三||
李四||
李四|| awk -F'|' 'NR==FNR{a[$2]=$0;next}{print a[$1] FS $2}' a b
awk -F'|' '{a[$2]=$0}NR>FNR{print a[$1] FS $2}' a b [解析]
由NR=FNR成立,判断当前读入的是第一个文件a,然后使用{a[$]=$;next}循环将a文件的每行记录都存入数组a,并使用$2作为下标引用.next,不在执行后面的语句.
由 NR=FNR不成立,判断当前读入了第二个文件b,然后跳过{a[$]=$;next},对第二个文件b的每一行都无条件执行{print a[$]FS$},此时变量$1为第二个文件的第一个字段,与读入第一个文件时,采用第一个文件的$2为数组下标相同.因此可以在此输出该数组的值。 下面那种写法是不是更短呢? awk应用 按条件打印文件 awk配合ls命令可以打印文件指定的某一列,ls -l的输出入下 -rwxr-xr-x user1 staff Dec : abc.sh
drwxr-xr-x user2 staff Dec : test_report
-rwxr-xr-x user3 staff Feb : test.pl
drwxr-xr-x user1 staff Feb : xyz 如果只想打印文件名(第九列),那么可以使用下面的方法,$9表示文本行的第九列。 ls -l | awk '{print $9;}' 如果只想打印user1创建的文件名,可以使用下面的方法,这里/user1/是一个pattern,表示只处理包含user1的文本行。 ls -l | awk '/user1/{print $9;}' 格式化打印 awk支持printf格式化打印。 只打印文件名和文件大小(文件名位于第9列,文件大小位于第5列) ls -l | awk '{print $9, $5;}' 上面的代码虽然能打印,但是格式很乱,可以使用printf格式化一下。 %s参数,用来打印字符串,可以指定宽度,不足的补空格,正数表示右对齐,负数表示左对齐。%3s表示字符串宽度为3列,右边对齐,如果字符串实际宽度大于3,那么取实际宽度。 文件名左对齐,大小左对齐 ls -l | awk '{printf "%-16s%\t%-16s\n", $9, $5;}' 文件名左对齐,大小右对齐 ls -l | awk '{printf "%-16s%\t%16s\n", $9, $5;}' 文件名右对齐,大小左对齐 ls -l | awk '{printf "%16s%\t%-16s\n", $9, $5;}' 文件名右对齐,大右左对齐 ls -l | awk '{printf "%16s%\t%16s\n", $9, $5;}' 按行打印环境变量PATH echo $PATH | awk -F: ' {
for (i = ; i <=NF; i++) {
printf "%s\n", $i;
}
}' 删除某个用户的所有文件 删除用户zdd的所有文件,注意-rf后面有一个空格。 ls -l | awk '/zdd/{print "rm -rf " $9} | sh my sample:

##purpose small script to check
## print sid
ps -ef|grep pmon|grep -v grep| awk ' { print $9 } '| awk -F_ ' { print $3 } ' | sort -rn > /tmp/sid.txt
cat /tmp/sid.txt| while read line
do
sid=`echo $line`
grep $sid /etc/oratab
done

 

转 awk 使用方法的更多相关文章

  1. awk 使用方法

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  2. awk使用方法与案例介绍

    一.awk简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切 ...

  3. Linux awk使用方法~~整理

    目录 awk行处理方式 awk命令格式 命令行格式 脚本格式 命令行格式——基本格式 awk内置变量 awk内置函数 测试数据 awk变量和函数使用实例 逻辑判断式 扩展格式 BEGIN 和 END ...

  4. Awk使用方法简介

    ==================AWK=================== AWK简介:awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得 ...

  5. AWK文本处理工具(Linux)

    AWK文本处理工具(Linux) PS:刚开始实习,就给了个处理百万级别数据的任务,以前学过SHELL的一些东西sed/awk之类的处理,但是也没有具体的应用,只是在10几行10几列的小数据操作过,所 ...

  6. 第4章 awk编程

    1 awk编程模型       2 awk用法 调用awk有三种方法(与sed类似): 在Shell命令行输入命令调用awk,格式为: awk [-F 域分隔符] 'awk程序段' 输入文件 将awk ...

  7. awk命令简单学习

    请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答). 解答: 说明:此题解答方法已经给大家讲解了不下15种,还可以有很多,在这里给大家着重讲下awk的技 ...

  8. linux awk浅析(转)

    Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将 ...

  9. sed和awk用法

    sed和awk用法 Sed sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为 ...

随机推荐

  1. hdu_5873_Football Games(xjb搞)

    题目链接:hdu_5873_Football Games 题意: 有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分 题解: 可以知 ...

  2. 1.MyBaits无代理全套增删改

    一.mybatis使用的准备工作 1.找到mybatis所需要的jar文件: mybatis-3.2.3.jar mybatis-spring-1.2.1.jar 2.解压mybatis-3.2.3. ...

  3. Struts文件上传

    首先要加入上传文件需要的jar文件 commons-fileupload-1.2.1.jar commomons-io-1.3.2.jar不同版本的strutsjar文件的版本也可能不同,一般在配置s ...

  4. 正规消息发送器-- ESFramework 4.0 进阶(06)

    在ESFramework 4.0 进阶(04)-- 驱动力:通信引擎(下)一文末尾我们已经将通信引擎以及整个消息骨架流程组装起来了,只要通信引擎一接收到消息,框架就会按照规定的流程进行运转.到这里,自 ...

  5. [转]整理jquery使用好习惯

    1.选择器Selector的使用 1)使用id定位性能最好   1.$("#id") 2)使用标签名定位,性能其次   1.$("p"),$("div ...

  6. .Net Core Session验证码

    1.验证码帮助类 namespace IdeaCore.Services.Common { public class ValidateCodeService : IValidateCodeServic ...

  7. ural 1049. Brave Balloonists(标准分解式,数论)

    1049. Brave Balloonists Time limit: 2.0 secondMemory limit: 64 MB Ten mathematicians are flying on a ...

  8. KVM 虚拟机基本管理及常用命令

    KVM的基本管理 1.查看KVM虚拟机配置文件 #Kvm虚拟机默认配置文件位置 [root@kvm qemu]# pwd /etc/libvirt/qemu [root@kvm qemu]# ll t ...

  9. nmon 安装

    安装: mkdir /usr/local/nmon cd /usr/local/nmon wget http://sourceforge.net/projects/nmon/files/nmon_li ...

  10. HDU 5754 Life Winner Bo

    四种棋子实质上都是一样的思路: 如果某位置的棋子,它下一步可以走到的位置中 能找到有后手胜的位置,那么该位置先手必胜. 如果某位置的棋子,它下一步可以走到的位置中 全是先手胜,那么该位置后手必胜. 其 ...