awk是一行一行处理文本,当需要判断当前处理行是否满足特定条件时,需要从shell中输入参数,然后放到awk的脚本命令中配合处理。
比如awk读取shell的位置参数$1 ,如果直接放在awk命令中会与每行的第一个字段$1冲突,需要特殊处理。
例如有文件 iet.txt如下格式,需求是提取第一个字段或第二个字段为AA的行
AA BB CC DD EE FF
CC DD EE FF GG DD
...
脚本如下,保存为tiqu.sh
#!/bin/bash
sed '/^$/d' iet.txt|awk '{if(NF>3&&($1=="'$1'"||$2=="'$1'")){print $1","$2","$6 }}'
执行方法:
bash tiqu.sh AA
输出结果:
AA BB...
查看当前网络连接状态命令
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
解释:
NF 当前处理行字段总个数
$NF (与$1对应)最后一个字段的值
awk特殊字段介绍
NR 当前处理总行数。因为awk是流处理工具,一行一行处理的,所以NR在不停的自增1,表示awk开始执行程序后所读取的数据行数 FNR 当前处理行是当前文件第几行,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。 NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。
awk处理多个文件的基本语法是...
shell脚本中常见的以美元符开头的环境变量,有的时候英文描述好像比中文更贴切一些。
大家直接看英文吧。
$n $1 the first parameter,$2 the second...
$# the number of command-line parameters.
$0 the name of current program.
$? last command or function's return value.
$$ the program's PID.
$! last program's PID.
$@ save all the parameters.
看完说明举个实际例子才能更好的理解
#!/bin/bash
echo "the number of command-line parameters: ...
win下用过不少轻量级文本编辑器,都各有千秋,也各有缺点,很难取舍。
editplus 很久以前使用的工具,没什么印象了。
ultraedit 功能强大,可是有些版本win下菜单模糊,字体不好看,最不能忍的是它是收费的。
notepad++ 支持高亮选中,列模式只要长按alt键,现在s使用的工具。
最近遇到一个sulime text 2,使用了一下发现很舒服,有几个功能特别实用。
1.字体漂亮,支持几乎所有格式的代码高亮。
2.支持vim模式编辑,linux下用户都喜欢hujk,不喜欢光标。
3.高亮选中,方便查看哪里实用同一变量。
4.预览模式, 可以快速拖动预览。
5....
phpMyAdmin安装前提条件:
* PHP 5.2 or later(包含mysqli、mbstring、mcrypt扩展)
* MySQL 5.0 or later
*可用的浏览器
下载安装包,解压即可使用
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.7/phpMyAdmin-4.0.7-all-languages.tar.gz
tar -zxvf phpMyAdmin-4.0.7-all-languages.tar.gz
mv phpMyAdmin-4.0.7-all-languages phpMyAdmin
123
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.7/php...
shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd、scp
对自动部署免去用户交互很痛苦,expect能很好的解决这类问题。
expect的核心是spawn expect send set
spawn 调用要执行的命令
expect 等待命令提示信息的出现,也就是捕捉用户输入的提示:
send 发送需要交互的值,替代了用户手动输入内容
set 设置变量值
interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。
expect eof 这个一定要加,与sp...