Chinaunix首页 | 论坛 | 博客
  • 博客访问: 543281
  • 博文数量: 119
  • 博客积分: 3167
  • 博客等级: 中校
  • 技术积分: 1215
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 21:21
文章分类

全部博文(119)

文章存档

2015年(21)

2012年(4)

2011年(1)

2007年(11)

2006年(50)

2005年(32)

分类: LINUX

2006-01-17 01:52:35

1. sed 替换部分字符
temp内容
aaabbb|aaacccccc|aaa.ddddd|
aaaeee|aaafffffffff|aaa.ggggg|
要达到目的
aaa[a_z]*这个正则表达式(也就是文件前两个域)数据中的aaa替换成111
sed 's/aaa\([a-z]\)/111\1/g' file

再比如

shell > ifconfig eth1|sed  -n '2p'
inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
#上面的输出 从中取出IP
sed 's/^.*:\(.*\) Bcast.*$/\1/g'
192.168.0.1

sed 's/^.*:\(.*\).*Mask:\(.*\)/\1\2/g'
192.168.0.255  255.255.255.0


2 检测字符串的长度
expr length yourstring
${#var}   
3  检测字符串是否为空

[ "x`echo $1|tr -d "[[:blank:]]"`" = "x"]
返回0 表示$1为空串

4 检测是否为数字
read;echo $REPLY|grep -q '^[:digit:].*$' && echo digit || echo stirng
5 检测PID是否在运行

kill -0 PID
pidof cmdName

6 替换变量中部分字符的方法

a="1.2 1.3"
echo ${a/ /+}   #把变量a中的空格变成+号
1.2+1.3
####################
js(){
str=$@
echo ${str// /+}|bc -l
}
run:
js 1.2 2.3

7 sed 替换部分字符
例一:请教cut 后能否加入分割符:
 我将一个文件cut -c 1-8,13-22,25-32,133-152后产生的文件是连在一起的,所需的4列之间没有分隔符,请教如何加上分隔符“|”

sed -n 's/^\(.\{8\}\).\{4\}\(.\{10\}\).\{2\}\(.\{8\}\).\{101\}\(.\{19\}\)/\1|\2|\3|\4/p' file
例二: 格式如下:
2611491:20060120182203:0000007
2621492:20060121182213:0000287
....................
请请如何用程序实现达到如下效果:
在第一列前加个0,把第2列拆分成2列(前8位一个列,后边6列为一列),把a.txt文件的第3列数据的前边的0去掉如上边的0000007显示成7不要前边的0.
具体显示的结果如下:
02611491:20060120:182203:7
02621492:20060121:182213:287
sed 's/\([^:]*:.\{8\}\)\([^:]*\):\(0*\)\(.*\)/0\1:\2:\4/ ' file

awk实现
awk 'BEGIN{FS=OFS=":"}{printf "%-20s:%-20s:%-20s:%d\n","0"$1,substr($2,1,8),substr($2,9,6),$3}' urfile

8 根据使用的控制台来来判断client
比如说,在windows设备上登录UNIX,登录后如何获得本机的IP,用netstat -a是可以查到所有的telnet,但是如何对应呢?
w|grep $( ps|awk 'NR==2{print $2}')
$( ps|awk 'NR==2{print $2}') 返回的是当前shell使用的控制台
 
阅读(1311) | 评论(0) | 转发(0) |
0

上一篇:seq的使用

下一篇:articles

给主人留下些什么吧!~~