分类: LINUX
2012-04-18 09:10:04
sed 删除空行和空白
sed -e ‘/^$/d' | sed -e '/^ /d'
在sed里边大片空白和空行的含义是不一样的
在awk里边指定多个多个分隔符的方法
awk -F[:“ “]等还可以添加多个分隔符
用awk来查找所有已经格式话和未格式化的硬盘:
#!/bin/bash
fdisk -l >/tmp/disk
awk '{if( $2 ~ /\/dev\/sd*/ || $1 ~ /\/dev\/sd*/ ) print $0}' /tmp/disk (显示所有硬盘并且有其分区的详细信息)
awk '{if( $2 ~ /\/dev\/sd*/ || $1 ~ /\/dev\/sd*/ ) print $0}' /tmp/disk | awk -F[:" "] '{if ($1 ~ /Disk/)print $2}' (只显示硬盘而不显示硬盘的分区信息)
awk -F[:" "] '{if( $2 ~ /\/dev\/sd*/ && $1 ~ /Disk/ ) print $2}' /tmp/disk (也可以用这个指令显示硬盘的详细信息)
有时我们不想让错误的东西显示到屏幕那么我们就可以用下边的方法:
如
fdisk -l >/tmp/disk 2>/dev/null
数组:
declare -a arrary_name
或者是
array_name[n]=value
把变量的值,或者是命令的结果赋值给数值:
array_name=( $( command argument) )
引用数组:
$array_name[$@] 表示引用数组的所有元素
$array_name[n] 表示引用数组的第n个元素
对利用awk来截取某个字段值中的几个字符:
awk '{print $1,$2,substr($4,8,9)}' /var/log/messages (打印$1,$2及截取$4中第8个字符向后9位)
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
长度为n,这个是要是字符都包含,包括所有的字符如各种标点符号等.
具体使用示例:
有时候我们需要根据ip地址做一些策略,把ip地址过滤出来可能有很多方法,现在用substr来过滤ip地址:
ifconfig |grep "inet addr" |awk '{print substr($2,6)}'
sed 中N的用法:
sed 中N的意思是在模式空间的当前行后边加入\n,然后再读入下一行
sed = filename 可以对file_name 编号,不过是序号一行,内容一行,如果要想让二者合并则可以用:
sed = filename | sed 'N;s/\n/\t/' (这可以用来对文件增加一行id)
sed 'N;s/\n/:/g' filename (在每行的行尾加入\n,然后再替换用:来替换)
sed 应用外部变量:
在写shell脚本的时候有时候需要引用外部变量,要不然就可能要通过中间件来转,在sed里边可以用:
sed "*/$variable/*"
或者是
sed '*/“$variable”/*'
注释: * 表示和sed相关的其他指令或者是匹配规则等
$variable 是在shell脚本里边定义的变量
sed 中文使用手册