
shell脚本
imzoer
Tencent mason
展开
-
shell去掉空白行、多余空格
去掉空白行:tr -s ["\012"] newtest.txtsed -n '/./p' temp_file5 > newtest.txtgrep . temp_file5 > newtest.txtgrep -v '^$' temp_file5 > newtest.txt去掉多余空格:cat test.txt | tr -s [:space原创 2012-04-30 15:42:53 · 36865 阅读 · 0 评论 -
使用awk求一个数字的阶乘
BEGIN{print( "enter number:")}#check if is a number$1 ~/^[0-9]+$/{ num=$1 if(num == 0) fact=1 else fact=num for(x=num-1;x>=1;x--){ fact*=x } print fact exit}#not a valid number{p原创 2013-03-26 15:09:29 · 1480 阅读 · 0 评论 -
在AWK中执行命令并使用getline输出全部结果
命令如下:awk 'BEGIN{RS="";"ls"|getline t;print t}'输出结果如下:root@ubuntu:/home/zoer# awk 'BEGIN{RS="";"ls"|getline t;print t}'abdaemon.pydataddDesktopdfadsfadfadfimportantinstallerjdk1.6.0_33原创 2013-03-31 11:52:48 · 2055 阅读 · 0 评论 -
linux运维中经常用到的shell
df命令linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。df命令可以显示目前所有文件系统的可用空间及使用情形。du:查询文件或文件夹的磁盘使用空间。-h:打印格式适合人类阅读-t type:查看指定类型文件系统的磁盘使用情况。type可以使ext3、ext4等。-i:查看inode的使用情况-T:列出文件系统类型du命令如果当前原创 2013-03-30 22:04:21 · 3735 阅读 · 0 评论 -
面试题目回忆版
1. 一开始进去先给一套题目给你做,40-45分钟,4条必做,2条选做(数据结构),然后4条开放题(选3道)必做题:(1)从a.log 文件中提取包含“WARNING” 或“FATAL”,同时不包含“IGNOR”的行,每行都若干个以“,”隔开的字段,将第2字段的值和第5字段的值相加,记为第6段。统计所有行那些第6段中值比第6段的平均值大的个数。(2)写一个SHELL,可以对某个文件原创 2013-04-06 20:42:09 · 1505 阅读 · 0 评论 -
使用awk合并文件--生成report
假设有两个文件是这样的:root@ubuntu:/home/zoer# cat id_name1 naughty2 cc4 yy3 zoerroot@ubuntu:/home/zoer# cat id_score 1 112 223 334 44现在要求使用shell命令,做一份报告,报告格式:学生姓名+学生成绩。中间以空格分隔。----------原创 2013-03-28 21:58:25 · 2444 阅读 · 0 评论 -
AWK中内置变量的使用->用AWK每次处理多行文本
关于sed的多行模式空间,看这里------------------------------------------------------------------------AWK中,FS、NR、NF我们都熟悉了。那么RS是什么呢?RS是记录分隔符。缺省为"\n"。也就是说,awk是根据RS指定的符号作为一条记录的分隔符的。在如下的文件中zoer@ubuntu:~$ ca原创 2013-03-29 21:30:27 · 6179 阅读 · 0 评论 -
sed命令的a、c、q命令
在前面都已经知道了d、p、-n、s///g等的用法。---------------------------------------------------sed中,a命令是指在匹配的位置后面插入新的内容。c命令是说将在匹配模式空间的指定行用新文本加以替代。看例子:zoer@ubuntu:~$ cat datanaughty is a boycc is a girlzoer原创 2013-04-07 13:25:21 · 16735 阅读 · 1 评论 -
使用sed在一个文件中指定位置插入另外一个文件的内容-r命令的使用
在一个文件的指定位置,比如说匹配到了一个单词的行的下一行开始插入另外一个文件的全部内容,可以使用sed的r命令。zoer@ubuntu:~/aa$ cat datahere is a test naughty loves ccand so on....zoer@ubuntu:~/aa$ cat ddtestline1testline2zoer@ubuntu:~/aa$ sed原创 2013-04-07 11:08:26 · 20904 阅读 · 5 评论 -
使用awk给文件增加一列以及sed使用例子
sed偏向于整行的处理文件。而awk偏向文件分为多个字段。--------------------------------------------------------------------------最近简单看了awk(虽然很久之前看过)awk中,域分隔符,使用-F参数来设置,比如说-F',',就是设置逗号为分隔符。也可以在其他位置设置,比如说,-------------原创 2013-03-25 10:09:39 · 47328 阅读 · 1 评论 -
使用sed分割文件
运维过程中,会遇到文件很大的情况。那么可以使用sed进行文件分割。name=$1lines=`wc -l $name|awk '{print $1}'`filename="log_"index=0count=1app=5while [ $count -lt $lines ]do end=`expr $count - 1 + $app` sed -n "$count,${end原创 2013-03-25 14:20:17 · 8721 阅读 · 0 评论 -
awk中next以及getline用法示例
在awk中,如果调用next,那么next之后的命令就都不执行了。此行文本的处理到此结束,开始读取下一条记录并操作。实例如下:zoer@ubuntu:~$ cat data 1000naughty 500cc 400zoer 100zoer@ubuntu:~$ awk '{if(NR==1){next} print $1,$2}' data naughty 500cc 400原创 2013-03-29 21:56:36 · 23001 阅读 · 3 评论 -
sort -k命令
http://blog.chinaunix.net/uid-10540984-id-313479.html这里的k是指按照那一列进行排序。sort命令可以按照多列进行排序。比如说sort -k 1 -k 2 test.txt,那么就会根据test.txt文件中的第一列和第二列进行排序。转载 2012-04-17 22:12:27 · 25331 阅读 · 0 评论 -
sed以及awk的替换命令
先看sed 的。比如说,在上面使用sed替换每行第一个出现的nau为n_a_u。如果加上g参数,那么对已一行,每次遇到一个nau就要替换一次。---------------------------------------------可以使用sed来执行一整个sed脚本。如下:--------------------------------------------原创 2013-03-26 14:08:23 · 14146 阅读 · 0 评论 -
AWK中,NR和FNR的区别
awk可以使用自身变量NR和FNR来处理多个文件。NR:表示awk开始执行程序后所读取的数据行数。FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。awk处理多个文件的基本语法是:awk -F分隔符 'BEGIN { 初始化 } {原创 2013-03-28 23:21:18 · 27901 阅读 · 0 评论 -
AWK数组操作详细学习----关联数组
awk的数组跟其他程序设计语言的数组有所不同:1、不需要正式定义,一个数组在使用时被定义;2、数组元素的初始值为0或空字符串,除非他们被显示的指定初始化;3、数组可以自动扩展;4、下标可以使字符串。------------------------------------------------------------------awk中,数组可以通过下标赋值,如下:ar原创 2013-03-28 21:33:04 · 10646 阅读 · 0 评论 -
AWK中使用函数
awk中有很多内置函数。可以分为两组。一个是算数函数,另外个是字符串函数。当然,awk也支持用户自己定义的函数来扩展内置函数。算数函数:cos(x)sin(x)exp(x)int(x):得到x的整数部分的值。log(x):返回x的自然对数。以e为底。sqrt(x):rand():产生一个0srand(x):建立rand()的新的种子数,如果没有指定种子数,就用当原创 2013-03-30 13:47:50 · 2981 阅读 · 0 评论 -
Linux命令:find和exec结合使用
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿 {},一个空格和一个\,最后是一个分号。 cmd {} \;看例子:zoer@ubuntu:~$ awk 'BEGIN{count=10;i=0;while(i<count){cmd="touch "i".txt";i++;system(cmd)}}'zoer@ubuntu:~$ find . -name '[0-9]\.原创 2013-03-31 13:25:01 · 11799 阅读 · 0 评论 -
向AWK脚本中传递参数
可以通过命令行向awk中传递参数。这样子传递进去的参数,在awk命令中可以访问。每一项都必须作为单一的一个参数来解释。所以,等号之间不能有空格。比如说我们传递进去一个学生名字,想查这个学生的得分。看例子:zoer@ubuntu:~$ cat data naughty 500cc 400zoer 100zoer@ubuntu:~$ awk -f a name=naughty原创 2013-03-29 22:23:13 · 30843 阅读 · 2 评论 -
SED多行模式空间
在前面看到的都是单行模式。每次sed处理一个行。但是sed是允许一次处理多行的。这就是所谓的多行模式空间。多行模式空间命令有(N、D、P),他们分别对应单行模式空间(n、d、p)。分别是他们的多行形式。只不过,d每次删除一行,而D每次删除多行模式空间中的“一行”,其实就是一个记录。下面举例子。我们假设有一个文件,loves cc两个单词分散在不同的行。我们想通过sed将二者放在同一原创 2013-03-30 19:18:49 · 26667 阅读 · 4 评论 -
awk中可以使用system来执行复杂的shell命令
在awk中可以直接执行shell命令。zoer@ubuntu:~$ touch azoer@ubuntu:~$ touch bzoer@ubuntu:~$ cat a.txt abzoer@ubuntu:~$ awk '{cmd="rm "$0;system(cmd)}' a.txt zoer@ubuntu:~$ lsa.txt dd import原创 2013-03-31 13:14:11 · 13175 阅读 · 0 评论 -
认识ssh
这不是java中的ssh!wiki上有解释。原创 2013-03-20 21:23:57 · 1202 阅读 · 0 评论 -
MySql批量drop table
今天发现数据库中很多没用的表,想清理掉。发现mysql好像不支持类似这样的写法:drop table like "%r"在oracle中,查了资料,是可以通过其他方式来实现:看这里【我顶!链接丢了!】那么想在mysql中实现,怎么做呢?两个思路:第一、修改mysql源码,在drop的时候加上like关键字支持。第二、写一个脚本,在数据库之外执行。------------原创 2013-01-06 11:15:41 · 19209 阅读 · 3 评论