在awk中,是支持自定义函数的,格式如下:

function name ( parameter, parameter, parameter, ... ) {
                        statements
                        return expression                  # the return statement and expression are optional
        }

但是此段代码块的位置并不是在BEGIN内进行定义,而是紧随在BEGIN之后,具体格式如下:

awk
'BEGIN{
   // do something ...
}
function name(para1, para2){
// do something ...
}
{
    // do something...
    name(a, b);
}
END{
    // do something...
}' filename

阅读全文

北京时间6月7日消息,据国外媒体报道,早在2005年的D3数字大会上,苹果前首席执行官史蒂夫•乔布斯(Steve Jobs)就曾设想了后PC时代的情况,并阐述了自己的设想:操作系统能不能不带文件系统。

上周苹果首席执行官蒂姆•库克(Tim Cook)在D10大会上表示,苹果将会加强产品保密。为了更好地理解这句话,可能还要回顾一下库克前任乔布斯在2003年至2010年间参加历届数字大会时发表的观点。

乔布斯常开玩笑说:“苹果就像一艘穿了底、漏着水的船,我的任务就是让这艘船朝着正确的方向航行。”

在2005年的D3大会上,乔布斯阐述了他所谓的后PC时代的关键因素之一:没有文件结构的操作系统。

乔布斯当时指出:“在我们开发的每个用户界面中,我们发现用户掌握文件系统非常容易也非常快。那么操作系统为什么要带文件系统呢?如果有一种更好的方法来找到所需的文件不是更好吗?”


阅读全文

在windows下用notapad++写的shell脚本,拷贝到Linux下却无法正常工作,而且一碰到空白行就会报错:./place_category.sh: line 2: $’r’: command not found

这些都是由于脚本的格式不对造成的。

因为在windows下,换行符是rn ,在Linux下是 n,所以在Linux下,当遇到空白行时,实际上是当作有一个命令r去执行,当然会报错了。

而且我定义了一个数组,结果也无法能够当作数组形式的数据,完全还是当作字符串一样。

#!/bin/bash
filename=$1
#定义数组,学校类型的关键字。
schools="学院 校"	
array=($schools)
# echo ${array[1]}

解决问题的办法就是在Linux下,或者windows下的cygwin也可以,运行dos2unix file.sh 命令,把shell脚本格式进行转换后即可。


阅读全文

北京时间6月5日消息,据国外媒体报道,全球最大的社交网络公司Facebook周一股价大幅下跌,报收于26.90美元,跌幅为2.96%,触及历史最低水平。自IPO上市以来,Facebook股价已经下跌了29%。

Bernstein Research的分析师卡洛斯·吉尔吉纳(Carlos Kirjner)周一开始将Facebook纳入研究范围中,并给予该股卖出评级,1年的目标股价定在25美元。

Facebook周一股价走势图

Facebook周一股价走势图


阅读全文

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。

top - 15:59:30 up 55 days,  5:05,  4 users,  load average: 0.19, 0.33, 0.30
	Tasks: 134 total,   1 running, 133 sleeping,   0 stopped,   0 zombie
	Cpu(s):  2.2%us,  0.4%sy,  0.0%ni, 97.2%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
	Mem:  12292800k total,  5476308k used,  6816492k free,  1117884k buffers
	Swap:  8385920k total,     5136k used,  8380784k free,  3281700k cache
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
10928 root      15   0  156m 9984 5328 S  6.0  0.1 971:34.63 php                                                                    
15234 root      18   0  157m  13m 5272 S  1.3  0.1   0:00.04 php                                                                    
 7664 www       15   0  420m  26m  15m S  0.7  0.2   0:00.55 httpd                                                                  
    1 root      15   0 10348   80   48 S  0.0  0.0   1:07.21 init                                                                   
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:04.55 migration/0                                                            
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                            
    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                             
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:02.20 migration/1</pre>

统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

15:59:30

当前时间

up 1:22

系统运行时间,格式为时:分

1 user

当前登录用户数

load average: 0.06, 0.60, 0.48

系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total

进程总数

1 running

正在运行的进程数

28 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s): 0.3% us

用户空间占用CPU百分比

1.0% sy

内核空间占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id

空闲CPU百分比

0.0% wa

等待输入输出的CPU时间百分比

0.0% hi

0.0% si


阅读全文

用awk进行文本处理,少不了就是它的数组处理。那么awk数组有那些特点,一般常见运算又会怎么样呢。我们先看下下面的一些介绍,结合例子我们会讲解下它的不同之处。在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。

一、定义方法

1:可以用数值作数组索引(下标)

Tarr[1]=“cheng mo”
Tarr[2]=“800927”

2:可以用字符串作数组索引(下标)

Tarr[“first”]=“cheng ”
Tarr[“last”]=”mo”
Tarr[“birth”]=”800927”
直接使用print Tarr[1]即可得到对应的值。
二、数组相关函数
1.获取数组长度 length函数; print length(Tarr);
2.输出数组内容(无序,有序输出):
无序输出:for(k in Tarr){print k,Tarr[k]}
有序输出:for(k=1;k<=length(Tarr);k++){print k,Tarr[k];}//注意,数组下标从1开始。
3.判断键值存在以及删除键值:
键值是否存在:if( "11211" in Tarr){print "ok";}
删除键值:delete Tarr['key'];

阅读全文

作者的图片

DigDeeply

Technology Stack: PHP/Openresty/GoLang, and so on…

Web Development Engineer

Beijing China