awk
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行各种分析处理
打印,$1:第一列,每行默认tab切割
$0:全部列
例如
$>last -n 5 | awk '{print $1}'
比如jps
jps | awk '{print $1}'
-F : 指定分隔符
比如按照.切割,打印第一列
$>last -n 5 | awk -F '.' '{print $1}'
实例1
last -n 5结果为
cj pts/2 192.168.217.1 Thu Mar 15 19:01 still logged in
cj pts/1 192.168.217.1 Thu Mar 15 19:00 still logged in
cj pts/0 192.168.217.1 Thu Mar 15 18:49 still logged in
cj tty1 :0 Thu Mar 15 18:48 still logged in
last -n 5 | awk -F '.' '{print $1}'结果为
cj pts/2 192
cj pts/1 192
cj pts/0 192
cj tty1 :0 Thu Mar 15 18:48 still logged in
reboot system boot 2
实例2
获得/etc/hosts 中ip地址的最后三位
192.168.217.110 hadoop-senior.cj.com
cat /etc/hosts | awk '{print $1}' | awk -F '.' '{print $4}'
实例3 杀死进程
kill -9 `jps | grep Kafka | awk '{print $1}'`
``为强行解析
书写杀死进程脚本
[xkill.sh]
#!/bin/bash
pids=`jps | grep $1 | awk '{print $1}'`
for pid in $pids ; do
kill -9 $pid
done
grep $1 这句中的$1指传过来的参数
支持正则
awk -F '/^datanode/' '{print $1}'
动态提取ip地址
ifconfig | grep inet | head -1 | awk '{print $2}'
head -1取出第一行