精华内容
下载资源
问答
  • 大半夜的需要找bug, get awk 新技能 记录下日志文件[2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('83', 'xsx', '0', '-5305....

    大半夜的需要找bug, get awk 新技能 记录下

    日志文件[2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('83', 'xsx', '0', '-5305.0156', '1533829040352', '1533829040352')

    [2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('77', 'xsx', '5299.7105844000000000', '0', '1533829040366', '1533829040366')

    [2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('83', 'xsx', '0', '-2910.9732', '1533829040385', '1533829040385')

    [2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('74', 'xsx', '2908.0622268000000000', '0', '1533829040393', '1533829040393')

    [2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('83', 'xsx', '0', '-4074.4491', '1533829040404', '1533829040404')

    [2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('99', 'xsx', '4070.3746509000000000', '0', '1533829040433', '1533829040433')

    [2018/08/09 23:37:29] _3339868244043501568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('87', 'xsx', '9262.3082202000000000', '0', '1533829049567', '1533829049567')

    [2018/08/09 23:37:38] _3339869416838008832_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('72', 'xsx', '10079.4670434000000000', '0', '1533829058302', '1533829058302')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('28', 'xsx', '0', '-10849.4314', '1533829067049', '1533829067049')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '10838.5819686000000000', '0', '1533829067058', '1533829067058')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('30', 'xsx', '0', '-6482.6165', '1533829067070', '1533829067070')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '6476.1338835000000000', '0', '1533829067080', '1533829067080')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('15', 'xsx', '0', '-1758.1030', '1533829067106', '1533829067106')

    [2018/08/09 23:37:47] _3339870592853741568_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '1756.3448970000000000', '0', '1533829067155', '1533829067155')

    [2018/08/09 23:37:47] _3339870660902129664_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('15', 'xsx', '0', '-5144.9479', '1533829067554', '1533829067554')

    [2018/08/09 23:37:47] _3339870660902129664_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('17', 'xsx', '5139.8029521000000000', '0', '1533829067566', '1533829067566')

    [2018/08/09 23:37:47] _3339870660902129664_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('41', 'xsx', '0', '-9359.1961', '1533829067577', '1533829067577')

    [2018/08/09 23:37:47] _3339870660902129664_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('17', 'xsx', '9349.8369039000000000', '0', '1533829067583', '1533829067583')

    [2018/08/09 23:37:53] _3339871450370805760_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('67', 'xsx', '4594.9123881000000000', '0', '1533829073666', '1533829073666')

    [2018/08/09 23:37:54] _3339871567140229120_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('94', 'xsx', '0', '-6251.7375', '1533829074305', '1533829074305')

    [2018/08/09 23:37:54] _3339871567140229120_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('99', 'xsx', '6245.4857625000000000', '0', '1533829074312', '1533829074312')

    Awkcat Sql-40-20180809.log |grep 67 |grep xsx |grep table |grep -i insert |awk '{print substr($0, 46)}'

    处理后INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('87', 'xsx', '9262.3082202000000000', '0', '1533829049567', '1533829049567')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('72', 'xsx', '10079.4670434000000000', '0', '1533829058302', '1533829058302')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('28', 'xsx', '0', '-10849.4314', '1533829067049', '1533829067049')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '10838.5819686000000000', '0', '1533829067058', '1533829067058')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('30', 'xsx', '0', '-6482.6165', '1533829067070', '1533829067070')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '6476.1338835000000000', '0', '1533829067080', '1533829067080')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('15', 'xsx', '0', '-1758.1030', '1533829067106', '1533829067106')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('22', 'xsx', '1756.3448970000000000', '0', '1533829067155', '1533829067155')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('15', 'xsx', '0', '-5144.9479', '1533829067554', '1533829067554')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('17', 'xsx', '5139.8029521000000000', '0', '1533829067566', '1533829067566')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('41', 'xsx', '0', '-9359.1961', '1533829067577', '1533829067577')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('17', 'xsx', '9349.8369039000000000', '0', '1533829067583', '1533829067583')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('67', 'xsx', '4594.9123881000000000', '0', '1533829073666', '1533829073666')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('94', 'xsx', '0', '-6251.7375', '1533829074305', '1533829074305')

    INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('99', 'xsx', '6245.4857625000000000', '0', '1533829074312', '1533829074312')

    展开全文
  • grep也是字符截取命令(本笔记在查找命令中),是从文件中截取符合条件的行,其他常见的字符截取命令还有:一、cut列提取命令:cut [选项] 文件名-f m[,n]:指定提取第m列或第m到第n列-d 分隔符:按照指定的分隔符分隔...

    grep也是字符截取命令(本笔记在查找命令中),是从文件中截取符合条件的行,其他常见的字符截取命令还有:

    一、cut列提取命令:cut [选项] 文件名

    -f m[,n]:指定提取第m列或第m到第n列

    -d 分隔符:按照指定的分隔符分隔列(没有此选项默认列之间用TAB制表符)

    如:cut -d ":" -f 1,3 /etc/passwd代表用冒号(:)作为分隔符,提取文件passwd中的第一和第三列

    该命令一般是和行截取命令grep结合使用的。

    一般情况下cut不能使用空格作为分隔符,所以除了以空格作为分隔符的内容之外,都可以使用cut。

    二、awk列提取命令,比cut命令复杂但是功能强大,能实现更为复杂的逻辑判断或循环等。

    使用方法:awk [options] '[BEGIN {command1}] pattern action [END {command2}]' {filenames}

    BEGIN中的command1,会在读入第一行之前执行,并且只执行一次。

    pattern是逻辑判断式

    action是在符合pattern逻辑判断时所执行的一系列命令。花括号{}用于对一系列指令进行分组

    END后面的command2,会在文件所有行都读完之后执行一次

    通常,awk是以文件的一行为处理单位的(除非使用RS指定行分隔符)。awk每接收文件的一行,然后执行相应的命令,来处理文本。

    awk支持if/else、while、do/while、for、break、continue等流程控制语句

    options:

    -F:指定列分割符,可以指定多个分隔符,默认使用一个或多个连续的空格或tab作为分隔符

    -F ":"表示使用冒号为分隔符

    -F "[:;,]"表示使用冒号、分号和逗号为分隔符

    -F "[:;]+"表示使用一个多连续的多个冒号或分号为分隔符

    BEGIN一般可以做以下事情:

    1、指定输入文件列分隔符(FS="[\s\t]+")和行分隔符(RS="\n")

    2、指定输出的列分隔符(OFS=" ")和行分隔符(ORS="\n")

    3、定义表头

    awk -F ':' 'BEGIN{FS=":";OFS="-";print "User","Uid"} $3>100 && $1 ~ /h/ {print $1,$3}' /etc/passwd

    4、定义一个参数并赋予初始值(一般需要END {command2}语句配合)

    ls -l | awk 'BEGIN {size=0} {size+=$5} END {print "Size is " size}'

    定义一个size变量并赋值为0,获取ls的第五列也就是文件大小的列相加,最后用END语句输出目录中文件的总大小

    pattern:

    ~和!~表示正则表达式是否匹配(只给出正则表达式等价于省略了"$0 ~")

    ==,!= , >=,<=, ,||,&& 用于判断大小、是否相等、逻辑与或

    例1:查询用户名包含'h'的用户,打印出用户名和UID

    awk -F ':' '$1 ~ /h/ {print "User:"$1 "\t" "UID:"$3}' /etc/passwd

    例2:打印用户id大于100的用户名和UID

    awk -F ':' '$3>100 {print "User:"$1 "\t" "UID:"$3}' /etc/passwd

    例3:打印用户id大于100并且用户名匹配正则的用户名和UID

    awk -F ':' '$3>100 && $1 ~ /h/ {print "User:"$1 "\t" "UID:"$3}' /etc/passwd

    例4:使用if/else语句:

    awk -F ":" '{

    if($3>100){

    printf("User:%s\tUID:%s\n",$1,$3)

    }else{

    printf("UID:%s\n",$3)

    }

    }' /etc/passwd

    awk内置变量

    ARGC 命令行参数个数

    ARGV 命令行参数排列

    ENVIRON 支持队列中系统环境变量的使用

    FILENAME awk浏览的文件名

    FNR 浏览文件的总行数

    NR 当前记录所在的行号

    NF 当前行共有多少列

    FS 输入文件的列分隔符,等价于命令行-F选项

    RS 输入文件的行分隔符

    OFS 输出内容的列分隔符(print函数中以逗号隔开的参数会用此分隔符分割)

    ORS 输出内容的行分隔符

    $0 指整行记录。

    $1表示第一列,$2表示第二列......以此类推。

    $NF表示最后一列,$NF-1表示倒数第2列,$NF-2表示倒数第3列......以此类推

    除了awk的内置变量,awk还可以自定义变量

    ls -l | awk 'BEGIN {size=0} {size+=$5} END {print "Size is " size}'

    awk函数

    length(str)返回str中字符的个数

    int(num)返回num的整数部分

    index(str1, str2)返回str2在str1中的索引,如果不存在就返回0

    split(str, arr, separator)使用separator作为分隔符,将str切分为数组保存到arr中,返回数组的元素个数

    print(fmt) 根据fmt的格式输出结果(会在每个输出之后自动加入一个换行符)

    printf(fmt, args)根据fmt格式化args,并输出结果

    sprintf(fmt, args)根据fmp格式化args,并返回格式化后的字符串

    substr(str, pos, len)返回str中从pos开始,长度为len个字符的子字符串

    tolower(str)返回str转换为小写字母后的副本

    toupper(str)返回str转换为大写字母后的副本

    最后编辑:2019-07-24作者:qingheluo

    这个作者貌似有点懒,什么都没有留下。

    展开全文
  • 切割文件内置变量的使用正则匹配...其实这个题不难,但是考察了几个常用的shell 命令awk、uniq、sort、head,我觉得对于做大数据开发、运维、数仓等来说都是应该必备的。2018-11-20T23:37:40+08:00 119.15.90.30 -...

    abcc7f06e911588b7eed0fbab7a2e652.png
    • 切割文件
    • 内置变量的使用
    • 正则匹配
    • 类sql功能

    作为一个大数据开发,先来一个我比较喜欢的面试题。

    对于下面的nginx日志access.log,用脚本分析出访问ip的Top 10。
    其实这个题不难,但是考察了几个常用的shell 命令,awk、uniq、sort、head,我觉得对于做大数据开发、运维、数仓等来说都是应该必备的。

    2018-11-20T23:37:40+08:00 119.15.90.30 - "GET /free.php?proxy=out_hp&sort=&page=1 HTTP/1.1" "/free.php" - 200 0.156 362 6849/7213 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - - - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)"
    2018-11-20T23:37:44+08:00 117.30.95.62 - "GET /partner.php HTTP/1.1" "/partner.php" - 200 0.016 457 6534/6956 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - https://blog.csdn.net/ithomer/article/details/6566739 - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
    2018-11-20T23:37:44+08:00 117.30.95.62 - "GET /css/bootstrap.min.css HTTP/1.1" "/css/bootstrap.min.css" - 200 0.045 398 19402/19757 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - https://proxy.mimvp.com/partner.php - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
    2018-11-20T23:37:44+08:00 117.30.95.62 - "GET /css/hint.min.css HTTP/1.1" "/css/hint.min.css" - 200 0.000 393 1635/1989 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - https://proxy.mimvp.com/partner.php - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
     
    

    来上答案

     cat access.log | awk '{print $2}'| uniq -c | sort -k1 -nr| head -10
    

    其实这个问题还有很多变种,比如除了脚本,用你最熟悉的语言写出来,还有如果文件过大,超过了内存限制,怎么处理。不过这些都是题外话了,我们今天主要讲一下awk在工作中的一些简单的应用。

    其实awk的功能非常强大,不过今天我们主要来讲讲在我们的工作中比较常用的awk用法。

    awk '{[pattern] action}' {filenames}
    
    

    0b6071184febfcc82285560dc7921082.png

    切割文件

    -F 指定拆分文件的分隔符,默认是空格或者 t 比如上面的日志我们想获取第二列的ip地址,我们可以这样写

    awk -F ' ' '{print $2}'  access.log 
    

    空格我们是可以不用写的,我这里写出来做一个示范。

    其实还有一种特殊字符,比如hive中默认分隔符是0x01,这种的使用awk怎么写呢?

    awk -F '001' '{ print $1 }' abcd.txt
    

    内置变量的使用

    • $0 用于打印出整行的字段.
    • $n 由 -F 参数指定的分隔符切割之后,$n用于打印出来第几个字段,索引从1开始
    • NF 每行数据切分之后,有多少列,比如我们可以用print $NF 来打印出最后一列

    有一些时候我们可以用awk 截取其中的某几个字段拼接出来我们想要的一些语句。
    比如我们想截取上面access.log里面的ip字段,然后生成一些sql,插入到数据库。

    awk '{print "insert into mytable(ip) values('''"$2"''');"}'  access.log > /tmp/ip.sql
    
    

    1af8c97b75574873bb63e01b4e518eaa.png

    有人会问,这种场景一般什么时候会用呢,比如你有一万条或者更多的数据,你完全可以写一个sql来插入,但是如果是数量太多的话,一次性写入太多数据,会导致锁表,这个时候其他人就没法插入了,如果是线上的生产环境就更不允许了,所以对于一些类似的操作,我们可以拆分出多个sql来一个个的执行,这样单个sql锁表的时间就会减少,避免长时间锁表带来的数据库不可用。

    正则匹配

    有时候我们只想打印出来一些我们想要的列,我们可以通过正则匹配来做。

    比如我们想打印出来上面的access.log中117开头的ip,可以这样做.

    awk '$2 ~ /^117/ {print $2}' access.log 
    

    类sql功能

    其实awk还可以帮我们实现一些简单的类似sql的功能,我们也简单说一下。

    比如我们有一个下面的学生表

    id 班级 姓名
    id class name

    1 1班 张三
    2 2班 李四
    3 1班 王五
    4 3班 赵六

    比如我们想统计每个班级有多少同学,可以使用如下命令

    awk '{a[$2]++} END {for(i in a){print i"人数 : "a[i]}}' student.txt
    

    我们定义了一个类似map的变量a,key是班级名称,也就是第二列,value值是每个班级对应的人数,最后通过一个for循环输出。

    6235d2f891113574c2cf505c508b27eb.png

    其实awk还有非常多、非常强大的功能,但是对于我们工作中我觉得用处并不大,这里就不着重介绍了,感兴趣的朋友可以网上找一些相关的资料。

    更多精彩内容,欢迎关注我的公众号[大数据技术与应用实战],一起成长.

    展开全文
  • 3 级别开启的服务: ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据) 9、如何在编写 SHELL 显示多个信息,用 EOF cat | === Welcome to Tunoff services === | +------------------------------------...

    344e8a3764a2358727ade58369083e26.png

    1、删除0字节文件

    find -type f -size 0 -exec rm -rf {} ;
    

    2、查看进程按内存从大到小排列

    PS -e -o "%C : %p : %z : %a"|sort -k5 -nr
    

    3、按 CPU 利用率从大到小排列

    ps -e -o "%C : %p : %z : %a"|sort -nr
    

    4、打印 cache 里的URL

    grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
    

    5、查看 http 的并发请求数及其 TCP 连接状态:

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    

    6、sed 在这个文里 Root 的一行,匹配 Root 一行,将 no 替换成 yes

    sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config 
    

    7、如何杀掉 MySQL 进程

    ps aux |grep mysql |grep -v grep  |awk '{print $2}' |xargs kill -9 
    (从中了解到awk的用途)
    
    killall -TERM mysqld
    
    kill -9 `cat /usr/local/apache2/logs/httpd.pid`   #试试查杀进程PID
    

    8、显示运行 3 级别开启的服务:

    ls /etc/rc3.d/S* |cut -c 15-   (从中了解到cut的用途,截取数据)
    

    9、如何在编写 SHELL 显示多个信息,用 EOF

    cat << EOF
    +--------------------------------------------------------------+
    |       === Welcome to Tunoff services ===                  |
    +--------------------------------------------------------------+
    EOF
    

    10、for 的巧用(如给 MySQL 建软链接)

    cd /usr/local/mysql/bin
    for i in *
    do ln /usr/local/mysql/bin/$i /usr/bin/$i
    done
    

    11、取 IP 地址

    ifconfig eth0 |grep "inet addr:" |awk '{print $2}'| cut -c 6-  
    

    或者

    ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
    

    12、内存的大小:

    free -m |grep "Mem" | awk '{print $2}'
    13
    
    netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %sn",$5,$6}' | sort
    

    14、查看 Apache 的并发请求数及其 TCP 连接状态:

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    

    15、因为同事要统计一下服务器下面所有的 jpg 的文件的大小,写了个 SHELL 给他来统计。原来用 xargs 实现,但他一次处理一部分。搞的有多个总和……,下面的命令就能解决。

    find / -name *.jpg -exec wc -c {} ;|awk '{print $1}'|awk '{a+=$1}END{print a}'
    

    CPU 的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。16、CPU负载

    cat /proc/loadavg
    

    检查前三个输出值是否超过了系统逻辑 CPU 的4倍。17、CPU负载

    mpstat 1 1
    

    检查 %idle 是否过低(比如小于5%)。18、内存空间

    free
    

    检查 free 值是否过低,也可以用 # cat /proc/meminfo19、SWAP 空间

    free
    

    检查 swap used 值是否过高,如果 swap used 值过高,进一步检查 swap 动作是否频繁:

    vmstat 1 5
    

    观察 si 和 so 值是否较大20、磁盘空间

    df -h
    

    检查是否有分区使用率(Use%)过高(比如超过90%)如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:

    du -cks * | sort -rn | head -n 10
    

    21、磁盘 I/O 负载

    iostat -x 1 2
    

    检查I/O使用率(%util)是否超过 100%22、网络负载

    sar -n DEV
    

    检查网络流量(rxbyt/s, txbyt/s)是否过高23、网络错误

    netstat -i
    

    检查是否有网络错误(drop fifo colls carrier),也可以用命令:# cat /proc/net/dev24、网络连接数目

    netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
    

    25、进程总数

    ps aux | wc -l
    

    检查进程个数是否正常 (比如超过250)26、可运行进程数目

    vmwtat 1 5
    

    列给出的是可运行进程的数目,检查其是否超过系统逻辑 CPU 的 4 倍27、进程

    top -id 1
    

    观察是否有异常进程出现。28、网络状态,检查DNS,网关等是否可以正常连通

    ping traceroute nslookup dig 
    

    29、用户

    who | wc -l
    

    检查登录用户是否过多 (比如超过50个) 也可以用命令:# uptime。30、系统日志

    # cat /var/log/rflogview/*errors
    检查是否有异常错误记录   也可以搜寻一些异常关键字,例如:
    
    grep -i error /var/log/messages
    grep -i fail /var/log/messages
    

    31、核心日志

    dmesg
    

    检查是否有异常错误记录。32、系统时间

    date
    

    检查系统时间是否正确。33、打开文件数目

    lsof | wc -l
    

    检查打开文件总数是否过多。34、日志

    # logwatch –print
    配置 /etc/log.d/logwatch.conf,将 Mailto 设置为自己的 email 地址,启动 mail 服务(sendmail或者postfix),这样就可以每天收到日志报告了。
    缺省 logwatch 只报告昨天的日志,可以用 # logwatch –print –range all 获得所有的日志分析结果。
    可以用 # logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。
    

    35、杀掉80端口相关的进程

    lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh
    

    36、清除僵死进程

    ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
    

    37、tcpdump 抓包,用来防止80端口被人攻击时可以分析数据

    tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
    

    38、然后检查IP的重复数并从小到大排序 注意 “-t +0” 中间是两个空格

    # less pkts | awk {'printf $3"n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"n"'} | sort -n -t +0
    

    39、查看有多少个活动的 php-cgi 进程

    netstat -anp | grep php-cgi | grep ^tcp | wc -l
    

    40、查看系统自启动的服务

    chkconfig --list | awk '{if ($5=="3:on") print $1}'
    

    41、kudzu 查看网卡型号

    kudzu --probe --class=network
    

    常用正则表达式

    1.匹配中文字符的正则表达式:[u4e00-u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了2.匹配双字节字符(包括汉字在内):[^x00-xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)3.匹配空白行的正则表达式:ns*r评注:可以用来删除空白行4.匹配 HTML 标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力5.匹配首尾空白字符的正则表达式:^s*|s*$评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式6.匹配Email地址的正则表达式:

    w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
    

    评注:表单验证时很实用7.匹配网址URL的正则表达式:[a-zA-z]+://[^s]*评注:网上流传的版本功能很有限,上面这个基本可以满足需求8.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实用9.匹配国内电话号码:d{3}-d{8}|d{4}-d{7}评注:匹配形式如 0511-4405222 或 021-8788882210.匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始11.匹配中国邮政编码:[1-9]d{5}(?!d)评注:中国邮政编码为6位数字12.匹配×××:d{15}|d{18}评注:中国的×××为15位或18位13.匹配ip地址:d+.d+.d+.d+评注:提取 IP 地址时有用14.匹配特定数字:

    ^[1-9]d*$   //匹配正整数
    ^-[1-9]d*$  //匹配负整数
    ^-?[1-9]d*$  //匹配整数
    ^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
    ^-[1-9]d*|0$  //匹配非正整数(负整数 + 0)
    ^[1-9]d*.d*|0.d*[1-9]d*$  //匹配正浮点数
    ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
    ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
    ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$  //匹配非负浮点数(正浮点数 + 0)
    ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
    

    评注:处理大量数据时有用,具体应用时注意修正15.匹配特定字符串:

    ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
    ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
    ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
    ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
    ^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
    

    评注:最基本也是最常用的一些表达式

    以上内容希望帮助到大家,需要更多文章可以关注公众号:PHP从入门到精通,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些PHP高级、架构视频资料和大厂PHP面试PDF免费获取,需要戳这里PHP进阶架构师>>>实战视频、大厂面试文档免费获取

    展开全文
  • 本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创。希望对需要学习、面试 Linux 运维的同学有所帮助。$1 入参,空值时...
  • 一、cut字段提取命令语法:cut [选项] 文件名选项:-f 列号 :指定提取第几列,如果提取多列,列号中间以逗号隔开-d 分隔符 :指定分割列的分隔符,以指定的分隔符来分割列。默认的分隔符为制表符如:在文件中指定...
  • 3 级别开启的服务: ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据) 9、如何在编写 SHELL 显示多个信息,用 EOF cat | === Welcome to Tunoff services === | +------------------------------------...
  • 3 级别开启的服务: ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据) 9、如何在编写 SHELL 显示多个信息,用 EOF cat | === Welcome to Tunoff services === |+-------------------------------------...
  • 3 级别开启的服务: ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据) 9 如何在编写 SHELL 显示多个信息,用 EOF cat | === Welcome to Tunoff services === |+--------------------------------------...
  • AWK截取字符

    2012-09-18 23:09:35
    AWK截取字符串文件file的每一行的格式如下:600001 200712 SH 20080413希望吧格式调整为:600001 2007 12 2008 04 13可以实用以下shell命令:cat file ...
  • Shell编程-字符截取命令-awk命令
  • 字符截取命令-awk命令

    千次阅读 2016-07-05 16:11:40
    awk命令是一个异常复杂的命令。了解常用的用法。功能:文件中截取我们需要的数据#awk '条件1{动作1}条件2{动作2}...' 文件名说明: 条件(Pattern) - 一般使用关系表达式作为条件 - x>10判断变量 x是否大于10 ...
  • 文章目录前言1.awk命令1.1 BEGIN... awk是一个非常复杂的命令,不光能实现字符段的截取,还可以在awk命令当中进行编程调用,最常用的是可以定义函数,可以判断,可以调用流程控制等。当cut命令不能完成的时候再考虑awk
  • 详细介绍了Shell编程中字符截取命令-cut printf awk sed。每一步都有详细操作演示,并附有截图。适合初学者。
  • shell字符截取命令awk命令

    千次阅读 2017-11-22 12:05:39
    一 语法     二 实战 [root@localhost ~]# cut -f 2,4 student.txt furong 85 ...[root@localhost ~]# awk '{printf $2 "\t" $4 "\n"}' student.txt furong 85 fengj 60 cang 70 [root@localho
  • Shell 字符截取命令 awk

    2015-06-11 22:38:00
    awk命令# awk '条件1{动作1} 条件2{动作2}….' 文件名一般使用关系表达式作为条件动作:1、格式化输出 2、流程控制语句 处理cut命令无法截取空格的列 例子:截取出磁盘使用率 df -h | grep "sda1" | awk ...
  • 1.cut -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n ...如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。 -b .eg1:...
  • 这里给大家提个建议,在学习awk命令之前先掌握printf命令的用法。printf '输出类型输出格式' 输出内容输出类型:%ns 输出字符串%ni 输出整数%m....例如:查看磁盘使用率,用cut命令截取字符串就不起作用的这时候,awk...
  • shell字符截取awk命令

    千次阅读 2019-06-18 15:56:13
    1. 命令格式 awk '条件1{动作1} 条件2{动作2}...' 文件名 条件 一般使用关系表达式作为条件 x>6:判断x是否大于6 x>=6:是否大于等于6 动作 格式化输出 流程控制语句(for循环、if语句) 2. 练习: print与...
  • 1. 简介awk是一个强大的文本分析工具 ,和大家经常使用的grep、sed 并称linux文本处理三大神器,相较于grep、sed来说awk更加强大,强大到几乎可以实现...2. 命令格式awk 操作符 ' 模式 { awk语法指定的操作 }' 数...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 278
精华内容 111
关键字:

awk截取字符命令