论正则表达式的“贪婪”性(转)
论正则表达式的“贪婪”性(转)[@more@]正则表达式是具有贪婪性的,我们从下面这例谈起:已知str="uid=100(guest) gid=100(others) groups=10(users),11(floppy)"现在想要得到这个字符串中的第一个括号内的值,即guest该怎么办?假设$str的括号外的内容是不固定的,不能依据uid之类的关键字或空格去查找,所依据的只能是找第一对括号内的内容。很自然的我们想到用sed,因为sed具有很强的模式匹配的功能,而且能够将匹配的部分内容强行记下来用于输出。这样,我们就会想:echo $str|sed 's/模式串/1/'只要模式串写好了,在匹配的过程中把gues
有谁知道“2>&1"的意思吗(转)
有谁知道“2>&1"的意思吗(转)[@more@]问:我在很多shell例子里看到,有"2>&1 >/dev/null"的写法,例如“/usr/lib/acct/ckpacct > /dev/null 2>&1“有谁知道这"2>&1“的意思吗?答:关于, & 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并
一个自动ftp的脚本(转)
一个自动ftp的脚本(转)[@more@]#!/bin/shF="xxxx.ftp"echo "open 192.168.7.51 21" > $Fecho "user username passwd" >> $Fecho "bin" >> $Fecho "cd /home/xxx/" >> $Fecho "mput $1" >> $Fecho "bye" >> $Fftp -i -in < $F rm -rf $F[/code:1:1ef71ebcfc] 感谢[size=18:1ef71ebcfc][b:1ef71ebcfc]deathcult[/b:1ef71ebcfc][/size: 1ef71ebcfc]大侠对shell的一贯支持!加精!([b:1ef71ebcfc]Admirer[/b:1ef71ebcfc]
sed 学习笔记(与大家共勉)(转)
sed 学习笔记(与大家共勉)(转)[@more@][b:4c6c2a6554]sed 学习笔记(与大家共勉)[/b:4c6c2a6554][b:4c6c2a6554]声明:[/b:4c6c2a6554]这些代码只是为了学习和理解sed命令而为之,并不代表问题的唯一解或最佳解,希望各位[b:4c6c2a6554]拍砖[/b:4c6c2a6554]参考资料:<sed&awk.pdf>等[b:4c6c2a6554][color=red:4c6c2a6554]一. 替换[/color:4c6c2a6554][/b:4c6c2a6554][b:4c6c2a6554]1.神奇变换([color=red:4c6c2a6554]y[/color:4c6c2a6554]命令的使用)[/b:4c6c2a6554][code:1:4c6c2a6554] sed 'y/ori_letter_list/target_letter_list/
利用颜色实现的口令程序(转)
利用颜色实现的口令程序(转)[@more@]利用颜色实现的口令程序,很简单,初级SHELL,没什么大用,挡一挡操作员也许可以.功能:输入三次口令失败后,等待5秒钟退出..最好加在.profile文件中,并将delete键失去作用.[code:1:57582d4d7e]## passwd_## 调用文件: lsmenu (背景文件) xy(){_r=$1_c=$2_txt=$3tput cup $_r $_cecho -n $_txt}## 口令检验password=`date +%y%d%m` #其实就是口令明码,你可以任意修改count=3while true doclearsh lsmenu #调用背景文件xy 6 16 "[30m[47m警告!!!必须经主管授权,请输入口令:c"echo "[34m[44mc"read passwde
Shell写的贪吃蛇游戏(转)
Shell写的贪吃蛇游戏(转)[@more@]忙一下午,终于出来了 在我的redhat8.0上运行通过。游戏键:上:w, i下:s, k左:a, j右:d, l退出:q[code:1:327d008a38]#!/bin/bashfunction DetectInput{while [[ 1 ]]doc=""read -n 1 cecho -ne " "if [[ $c == "a" || $c == "j" || $c == "A" || $c == "J" ]]thenkill -36 $pidShowSnakeelif [[ $c == "w" || $c == "i" || $c == "W" || $c == "I" ]]thenkill -37 $pidShowSnakeelif [[ $c == "d" || $c == "l" || $c == "D" || $c == "L" ]]thenkill -38 $pidShowSnakeelif [[ $c == "s" || $c ==
shell版俄罗斯方块(转)
shell版俄罗斯方块(转)[@more@]感谢各位兄弟的捧场,属于旧瓶装新酒了,呵呵如果你的终端可以显示出颜色,效果会好点运行于GNU bash, version 2.05a.0(1)-release (i686-pc-linux-gnu)[code:1:7a68d2722e]#!/bin/bash# Tetris Game# 10.21.2003 xhchen<xhchen@winbond.com.tw>#color definitioncRed=1cGreen=2cYellow=3cBlue=4cFuchsia=5cCyan=6cWhite=7colorTable=($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)#size & positioniLeft=3iTop=2((iTrayLeft = iLeft + 2))((iTrayTop = iTop + 1)) ((iTrayWidth = 10
快速建立文件列表(转)
快速建立文件列表(转)[@more@]在linux操作系统之下,我们也可以实现对MP3文件的播放, 但是在Linux的命令行状态下,我们只能一首一首地进行播放歌曲,如果我们想连续地播放某一个目录下的所有MP3文件时,就必须首先把这些扩展名为mp3的所有音频文件建立一个MP3播放列表, 能后使用播放命令,来依次播放列表中的音乐文件, 那么我们该如何建立mp3文件的播放列表呢?其实很简单,我们只要在系统的命令行中输入如下的命令:find /mnt/cdrom -name *.mp3 -print >>cd1.play.list,这样就会把指定目录中的所有MP3文件建立一个名为play.li
用shell处理二进制文件(转)
用shell处理二进制文件(转)[@more@]我以前写过一个shell script,其中有一部分是转换十六进制到十进制。道理差不多,应该和这个有点象,是Solaris环境下的。 用来转换 Solaris下的Sybase interfaces file 为windows环境下的Sybase的sql.ini。[code:1:8fab55483b]#!/bin/sh# This is a script to convert the interfaces file of sybase server to sql.ini ofsybase client on PC.# Illusion/ICIL# Intialize sql.ini(echo ";; Sybase Interfaces file"echo ";;"echo ";; [<database_server_name>]"echo ";; <link_type>=<n
转换金额大写的SHELL程序(绝对通过验证)(转)
转换金额大写的SHELL程序(绝对通过验证)(转)[@more@][code:1:7abe7d16ca]#!/bin/ksh# Program Name : Num2Chn.sh# Programmer : 吕永辉(仙桃市信用联社)# 首先判断输入的是否为数字printf "%.2f" $1 >/dev/null 2>&1 3>&1 || {echo "输入非法!!!";exit}# 定义数字数组Num[0]="零" Num[1]="壹" Num[2]="贰" Num[3]="叁" Num[4]="肆" Num[5]="伍"Num[6]="陆" Num[7]="柒" Num[8]="捌" Num[9]="玖"# 定义金额单位数组Unit[1]="分" Unit[2]="角" Unit[3]="元" Unit[4]="拾" Unit[5]="佰" Unit[6]="仟"Unit[7]="万" Unit[11]=
sed学习笔记(转)
sed学习笔记(转)[@more@]Table of Contents1. Sed简介2. 定址3. Sed命令4. 选项5. 元字符集6. 实例7. 脚本1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。2. 定址可
一个把IP地址转化为长整数的脚本(转)
一个把IP地址转化为长整数的脚本(转)[@more@]有些时候,很多人在pub网址的时候会使用一个长整数,这样相对来说IP地址不易为被别人记住,但一样可以在flashfxp等工具中使用,即使是ping也支持这种写法,如:ping 16843009PING 16843009: (1.1.1.1): 56 data bytes不过我写这个脚本的最初目的,只是为了用较短的代码判断输入是不是一个符合格式的IP地址。[code:1:65116d8eca]#!/usr/bin/kshexpr $1 : '^[1-9]{1}[0-9]{0,2}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$' >/dev/null 2>&1 || { echo "bad ip address";exit; }IFS=.set $1if
SED 手册 - 6.解(转)
SED 手册 - 6.解(转)[@more@]解一.就是後面将会提到的 sed script。 解二.指令 s/Unix/UNIX/ 表示将 "Unix" 替换成 "UNIX"。请参照 section 4.1。 解三.在指令中有 20 几个函数参数可供选择。 解四.以後这档案称作 script file。 解五.编辑指令 1,10d 中 , 地址参数为 1,10 , 故 1 至 10 行的资料执行函数参数 d 所指定的删除动作。 解六.编辑指令 s/yellow/black/g 中 , 由於没有地址参数 , 故所有的资料行都要执行函数参数 s/yellow/black/g 所指定替换动作。在函数参数 s/yellow/black/g 中 , /yellow/black/g 为 s 的 argument , 其表
SED 手册 - 5.常用的 regular expression(转)
SED 手册 - 5.常用的 regular expression(转)[@more@]普通字元 由普通字元所组成的 regular expression 其意义与原字串字面意义相同。 ^字串 限制字串必须出现於行首 。 $字串 限制字串必须出现行尾。 . 表示任意一字元。 [...] 字元集合, 用以表示两中括号间所有字元当中的任一个 ,如 [^...]表示两中括号间所有字元以外的字元。-& 字元集合中可用"&"指定字元的围。 * 用以形容其前的字元(或字元集合)可重覆任意多次 。 表示嵌入新行字元(imbedded new line character)。 (...) 於 regular expression 中使用"(" ")"来括住一部份
SED 手册 - 4.介绍函数参数(转)
SED 手册 - 4.介绍函数参数(转)[@more@]本章将以一节一个函数参数的方式 ,介绍所有 sed 提供的函数参数 , 其中有 | s | d | a | i | c | p | l | r | w | y | ! | n | q | = | # | N | D | P | h | H | g | G | x | b | t | 另外 , 在各节中 , 首先简单介绍函数参数功能 , 接着说明函数参数与位址参数配合的格式 , 而其中也一描述 sed 执行此函数参数的工作情形。 4.1 s 函数参数 s 表示替换(substitute)文件内字串。其指令格式如下 : [address1[ ,address2]] s/pattern/replacemen/[flag] 对上述格式有下面几点说明 : 函数参数 s 最多与两
SED 手册 - 3.例(转)
SED 手册 - 3.例(转)[@more@]一般在实际使用编辑器的过程中 , 常需要执行替换文件中的字串、搬移、删除、与搜寻资料行等等动作。当然 , 一般交谈式编辑器(如 vi、emacs)都能做得到上述功能 , 但文件一旦有大量上述编辑需求时 , 则用它们编辑十分没有效率。本章将用举例的方式说明如何用 sed 自动执行这些编辑功能。此外 , 在本章例中 , 均以下述方式描述文件的需求 : 将文件中...资料 , 执行...(动作)如此 , 目的是为了能将它们迅速的转成编辑指令。其中 , " ...资料" 部份 , 转成指令中的位址参数表示 ; "执行...动作" 部份 , 则转成函数
SED 手册 - 2. 使用 sed(转)
SED 手册 - 2. 使用 sed(转)[@more@]Sed 命令列可分成编辑指令与文件档部份。其中 , 编辑指令负责控制所有的编辑工作 ; 文件档表示所处理的档案。sed 的编辑指令均由位址(address)与函数(function)两部份组成 , 其中 , 在执行时 , sed 利用它的位址参数来决定编辑的对象;而用它的函数参数(解[3])编辑。 此外 , sed 编辑指令 , 除了可在命令列上执行 , 也可在档案内执行。其中差别只是在命令列上执行时 , 其前必须加上选项 -e ; 而在档案(解[4])内时 , 则只需在其档名前加上选项 -f。另外 , sed 执行编辑指令是依照它们在命令列上或档内的次
SED 手册 - 1. Introduction(转)
SED 手册 - 1. Introduction(转)[@more@]1.Introduction Sed(Stream EDitor)为 UNIX 系统上提供将编辑工作自动化的编辑器 , 使用者无需直接编辑资料。使用者可利用 sed 所提供 20 多种不同的函数参数 , 组合(解 [1])它们完成不同的编辑动作。此外 , 由於 sed 都以行为单位编辑文件 , 故其亦是行编辑器(line editor)。 一般 sed 最常用在编辑那些需要不断重覆某些编辑动作的文件上 , 例如将文件中的某个字串替换成另一个字串等等。这些相较於一般 UNIX 编辑器(交谈式的, 如 vi、emacs)用手动的方式修改文件 , sed 用起来较省力。下面几节将
用awk合并行(转)
用awk合并行(转)[@more@]四行合一行[code:1:bde308dcc7]cat filename111111111222222222333333333444444444555555555666666666777777777888888888999999999awk '{if (NR%4==0){print $0} else {printf"%s ",$0}}' filename111111111 222222222 333333333 444444444555555555 666666666 777777777 888888888999999999[/code:1:bde308dcc7]
偶用tput编的一个选择式菜单(转)
偶用tput编的一个选择式菜单(转)[@more@]偶编的简单的菜单:感觉还可以,就是运行太慢,可能不实用,但费了偶不少脑筋,不忍弃之..####################################### # program: MENU_CD######################################## 屏幕任意位置函数xy(){#_R=row,_C=column_R=$1_C=$2tput cup $_R $_C}########## 格式化dd_code.txt文件内容并生成屏幕菜单clearxy 1 2 echo '[36m┌────────────────────────────────┐[37m' #注[36m)( 色彩控制符在unix下应该是这样的^[[36m xy 1 26 echo '[41m[37