Linux

linux awk命令详解linux awk命令
Linux常用操作指令
Linux netstat命令详解

grep 、sed、awk被称为linux中的"三剑客"。
我们总结一下这三个"剑客"的特长。
grep 更适合单纯的查找或匹配文本
sed  更适合编辑匹配到的文本
awk  更适合格式化文本,对文本进行较复杂格式处理
awk
  样式扫描和处理语言
  允许您创建简短的程序
  它适合文本处理和报表生成
  读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能
awk '{pattern + action}' {filenames}
  pattern 表示 AWK 在数据中查找的内容
  action 是在找到匹配内容时所执行的一系列命令
  花括号{}不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组
  pattern表示要匹配的正则表达式,用斜杠括起来

  awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,
  awk抽取信息后,才能进行其他文本操作。
  完整的awk脚本通常用来格式化文本文件中的信息。
  通常,awk是以文件的一行为处理单位的。逐行匹配处理

awk [-F|-f|-v] `BEGIN{} //{command1; command2} END{}` file
[-F|-f|-v]  参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
' ' 引用代码块
BEGIN   初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//           匹配代码块,可以是字符串或正则表达式
{}           命令代码块,包含一条或多条命令
;          多条命令使用分号分隔
END      结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息

echo $[3*5]    直接输出结算结果15、$[]只能进行整数运算
echo $((3*5))  将数学运算表达式放在((和))之间、$获取(( ))命令的结果
echo let c=a*b #let 命令也只能进行整数运算
#===================
  + 表示增加权限、- 表示取消权限、= 表示唯一设定权限
  User拥有者、Group用户组、Other其他人、All所有人
  u、g、o、a
  r可读取,w可写入,x可执行
  r=4,w=2,x=1
#===================
chmod a=rwx file    # 给所有人设置权限
chmod u=rwx file
chmod g=rwx file
chmod o=rwx file
chmod 777 file
$0  当前脚本的文件名、
$n  (n≥1) 传递给脚本或函数的参数
$#  传递给脚本或函数的参数个数
$*  传递给脚本或函数的所有参数
$@  传递给脚本或函数的所有参数
$?  获取上个命令的退出状态、或函数的返回值
$$  当前shell的进程 ID
"$*"  会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据
"$@"  仍然将每个参数都看作一份数据,彼此之间是独立的
type 命令用来显示指定命令的类型是否为内建类型
echo 用于字符串的输出
printf [format] [文本1] [文本2]  格式化输出

echo $-     查看变量-的值,如果值中包含了字母i,则表示交互式(interactive)
echo $PS1   查看变量PS1的值、非空则为交互式、否则为非交互式、因为非交互式会清空该变量
echo $$     检测是否在当前 Shell 进程中、输出当前进程PID
shopt login_shell   判断 Shell 是否为登录式、on为登陆、off非登陆
echo $PS1; shopt login_shell   # 同时判断交互式、登录式
read hello  # 监听读取输入
echo $hello # 输出变量的值
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

ifconfig
ifconfig |grep inet
netstat -anp|grep :22
service sshd start   启动ssh服务
service iptables stop 关闭防火墙
service iptables status 查看防火墙是否关闭
awk命令

不使用分隔符、默认使用空格作为分隔符、多个连续空格会自动视为一个分隔符
awk是逐行进行处理的、如果没有指定分隔符、默认使用空格作为分隔符

$0  表示显示整行
$NF 表示最后一个字段
NF表示当前行一共有几个字段、是统计数字
$1、$2这种内置变量不需要使用双引号、否则会被当中文本处理
awk '{print $1 $2}' test.txt        // 以空格作为风隔符、输出第1列、第2列、
awk '{print $1,$2}' test.txt        // 以空格作为风隔符、输出第1列、第2列、
awk '{print $1,$2,$3}' test.txt  
awk '{print "PID:" $1}' test.txt  // 同时打印字符串"PID"和$1变量的值
awk '{print "PID:" $1, "COMMOND:" $2}' test.txt     //  可以组合很多
BEGIN模式表示、在处理指定文本之前执行的动作
awk 'BEGIN{print "开始"} {print $1}' test.txt
END模式就是在处理玩所有的动作之后、需要执行的动作
awk '{print $2} END{print "结束啦"}' test.txt
awk分隔符

输入分隔符

FS、field separator
默认分隔符是空格、多个连续空格会自动视为单个空格分隔符
输出风隔符
OFS、output field separator
输出在屏幕上的时候、默认输出风隔符也是空格
awk -F# '{print $1,$2}' test.txt            // 通过#号作为分隔符
awk -v FS="," '{print $2}' test.txt       // 通过,逗号作为分隔符
`输出分隔符就是输出显示在屏幕时各个变量值之间的分隔符`
awk -v OFS="+++" '{print $1,$2}' test.txt     // 通过+++号作为输出风隔分隔符
awk '{print $1 $2}' test.txt    // 表示每行风隔后、将第一列和第二列连接在一起合并输出
awk '{print $1,$2}' test.txt    // 表示每行风隔后、将第一列和第二列输出风格符隔开输出
awk变量
FS      输入字段分隔符、默认空格
OFS   输出字段分隔符、默认空格
RS      输入换行分隔符、默认换行符
ORS   输出换行风隔符 、默认换行符
NF      当前行字段个数、字段数量        Number of Fileds
FNR    各个文件分别计数的行数
NR      当前处理的行是第几行              Number of Record
awk格式化
awk '{print $1,$2}' test.txt    // 会进行换行
awk '{printf $1,$2}' test.txt   // 不会进行换行、文本输出在一行里面
awk '{printf "文本信息: %s\n", $3}' test.txt    // 格式化输出、
awk模式

进程ID: Processes: 380 total, 2 running, 378 sleeping, 1597 threads 空隔分隔等于10列

awk 'NF==10 {print $0}' test.txt   // 处理并输出行字段(列)等于10列的全部数据
awk 'NF>=10 {print $0}' test.txt    
awk 'NF<=10 {print $0}' test.txt
awk 'NR==5{print $1,$2,$3}' test.txt    // 输出第5行的前3列
awk 'NR>=5{print $1,$2,$3}' test.txt
awk 'NR<=5{print $1,$2,$3}' test.txt
awk 'NR>=20&&NR>=15{print $0}' test.txt
// 正则模式
awk '/正则表达式/{print $0}'  /etc/passwd    // 正则模式应该放在//中间
awk '/PID/{print $0}' test.txt      // 正则匹配PID、输出整行
awk '/top/{print $0}' test.txt
awk '/[0-9]{1,5}/{print $0}' test.txt
awk '/[0-9]{5}/{print $0}' test.txt
awk动作

动作第一部分: {}
动作第二部分: print printf ...

awk '/[0-9]{5}/{print $1}{print $2}' test.txt        // 两个{}的组合动作
awk '/[0-9]{5}/{print $1;print $2}' test.txt          // 分号风隔的组合动作
awk '{if(NR==10){print $1;print $2}}' test.txt     // 条件判断动作
awk '{if(NR==10)print $1;print $2}' test.txt        // 如果if 只有一条语句、可以省略打括号
awk '{if(NR==0){print $1,$2}else{print $3,$4}}' test.txt   // if... else...
awk '{if(NF>13&&NF<30){print $1 }}' test.txt
awk '{if(NF>13&&$2=="top"){print $1 }}' test.txt
awk '{if(NF>13&&$3>0){print $1 }}' test.txt
awk '{if(NF>13&&$3>0){print $1 "\t" $3 }}' test.txt
ps -ef|grep java|awk '{print $NF}'
ps -ef|grep java|awk '{print $0}'
ps -ef|grep java|awk '{print $1,$2}'

netstat

netstat 是一款命令行工具、显示网络状态、TCP/UDP/SOCKET等。反向域名解析技术查找每个 IP 地址对应的主机名、会降低查找速度、默认是开启的、 -n 选项禁用域名解析功能。ping、tracert、ifconfig、netstat、nc。

netstat -a      列出所有连接
netstat -at     列出TCP连接
netstat -au     列出UDP连接
netstat -ant    禁用反向域名解析加快查询速度
netstat -tnl    只列出监听中的连接
netstat -s      打印统计数据
netstat -rn     显示内核路由信息
netstat -i      打印网络接口
netstat -ct     持续输出信息
netstat -g      输出 IPv4 和 IPv6 的多播组信息
netstat -nlpt   列出TCP 协议下的监听套接字,同时显示进程信息和一些额外信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容