sed:处理报文输出
时间:2008-05-20 来源:poplar.xu
处理报文输出
当从数据库中执行语句输出时,一旦有了输出结果,脚本即可做进一步处理。通常先做一些整理,下面是一个s q l查询结果。
[Copy to clipboard] [ - ] CODE:
当从数据库中执行语句输出时,一旦有了输出结果,脚本即可做进一步处理。通常先做一些整理,下面是一个s q l查询结果。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ cat data.txt
Database Size(MB) DataCreated
-----------------------------
GOSOUTH 2244 12/11/97
TRISUD 5632 8/9/99
(2 rows affected)
为了使用上述输出信息做进一步自动处理,需要知道所存数据库名称,为此需执行以下
操作:
1) 使用s / - * / / g删除横线- - - - - -。
2) 使用/ ^ $ / d删除空行。
3) 使用$ d删除最后一行
4) 使用1 d删除第一行。
5) 使用awk {print $1}打印第一列。
命令如下,这里使用了c a t,并管道传送结果到s e d命令。
[Copy to clipboard] [ - ] CODE:
Database Size(MB) DataCreated
-----------------------------
GOSOUTH 2244 12/11/97
TRISUD 5632 8/9/99
(2 rows affected)
为了使用上述输出信息做进一步自动处理,需要知道所存数据库名称,为此需执行以下
操作:
1) 使用s / - * / / g删除横线- - - - - -。
2) 使用/ ^ $ / d删除空行。
3) 使用$ d删除最后一行
4) 使用1 d删除第一行。
5) 使用awk {print $1}打印第一列。
命令如下,这里使用了c a t,并管道传送结果到s e d命令。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ cat data.txt |sed 's/--*/ /g' | sed '/^$/d' | sed '$d' | sed '1d' | awk '{print $1}'
GOSOUTH
TRISUD
附加文本
当帐户完成设置一个文件时,帐号管理者可能要在文件中每个帐号后面加一段文字,下面是此类文件的一部分:
[Copy to clipboard] [ - ] CODE:
GOSOUTH
TRISUD
附加文本
当帐户完成设置一个文件时,帐号管理者可能要在文件中每个帐号后面加一段文字,下面是此类文件的一部分:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ cat ok.txt
AC456
AC492169
AC9967
AC88345
任务是在每一行末尾加一个字符串‘ p a s s e d’。
使用$命令修改各域会使工作相对容易些。首先需要匹配至少两个或更多的数字重复出现,这样将所有的帐号加进匹配模式。
[Copy to clipboard] [ - ] CODE:
AC456
AC492169
AC9967
AC88345
任务是在每一行末尾加一个字符串‘ p a s s e d’。
使用$命令修改各域会使工作相对容易些。首先需要匹配至少两个或更多的数字重复出现,这样将所有的帐号加进匹配模式。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ sed 's/[0-9][0-9]*/& Passed/g' ok.txt
AC456 Passed
AC492169 Passed
AC9967 Passed
AC88345 Passed
从shell向sed传值
要从命令行中向s e d传值,值得注意的是用双引号,否则功能不执行。
[Copy to clipboard] [ - ] CODE:
AC456 Passed
AC492169 Passed
AC9967 Passed
AC88345 Passed
从shell向sed传值
要从命令行中向s e d传值,值得注意的是用双引号,否则功能不执行。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ NAME="It's a go situation"
[sam@chenwy sam]$ REPLACE="GO"
[sam@chenwy sam]$ echo $NAME | sed "s/go/$REPLACE/g"
It's a GO situation
从sed输出中设置shell变量
从s e d输出中设置s h e l l变量是一个简单的替换过程。运用上面的例子,创建s h e l l变量N E W- N A M E,保存上述s e d例子的输出结果。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ REPLACE="GO"
[sam@chenwy sam]$ echo $NAME | sed "s/go/$REPLACE/g"
It's a GO situation
从sed输出中设置shell变量
从s e d输出中设置s h e l l变量是一个简单的替换过程。运用上面的例子,创建s h e l l变量N E W- N A M E,保存上述s e d例子的输出结果。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ NAME="It's a go situation"
[sam@chenwy sam]$ REPLACE="GO"
[sam@chenwy sam]$ NEW_NAME=`echo $NAME | sed "s/go/$REPLACE/g"`
[sam@chenwy sam]$ echo $NEW_NAME
It's a GO situation
这里的`是键盘左上角那个`
下面是一些一行命令集。([ ]表示空格, [ ]表示t a b键)
QUOTE: ‘s / \ . $ / / g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^ [ ] [ ] * / / g’ 删除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/ ^ $ / d’ 删除空行
‘s / ^ . / / g’ 删除第一个字符
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^ \ / / / g’ 从路径中删除第一个\
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^ [ ] / / g’ 删除行首所有t a b键
‘s / [ ] * / / g’ 删除所有t a b键
1. 删除路径名第一个\符号
将当前工作目录返回给s e d,删除第一个\:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ REPLACE="GO"
[sam@chenwy sam]$ NEW_NAME=`echo $NAME | sed "s/go/$REPLACE/g"`
[sam@chenwy sam]$ echo $NEW_NAME
It's a GO situation
这里的`是键盘左上角那个`
下面是一些一行命令集。([ ]表示空格, [ ]表示t a b键)
QUOTE: ‘s / \ . $ / / g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^ [ ] [ ] * / / g’ 删除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
‘/ ^ $ / d’ 删除空行
‘s / ^ . / / g’ 删除第一个字符
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^ \ / / / g’ 从路径中删除第一个\
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^ [ ] / / g’ 删除行首所有t a b键
‘s / [ ] * / / g’ 删除所有t a b键
1. 删除路径名第一个\符号
将当前工作目录返回给s e d,删除第一个\:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo $PWD |sed 's/^\///g'
usr/sam
2. 追加/插入文本
将"Mr Wi l l i s "字串返回给s e d并在M r后而追加" B r u c e "。
[Copy to clipboard] [ - ] CODE:
usr/sam
2. 追加/插入文本
将"Mr Wi l l i s "字串返回给s e d并在M r后而追加" B r u c e "。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo "Mr Willis" |sed 's/Mr /& Bruce/g'
Mr BruceWillis
3. 删除首字符
s e d删除字符串“a c c o u n t s . d o c”首字符。
[Copy to clipboard] [ - ] CODE:
Mr BruceWillis
3. 删除首字符
s e d删除字符串“a c c o u n t s . d o c”首字符。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo "accounts.doc" |sed 's/^.//g'
ccounts.doc
4. 删除文件扩展名
s e d删除“a c c o u n t s . d o c”文件扩展名。
[Copy to clipboard] [ - ] CODE:
ccounts.doc
4. 删除文件扩展名
s e d删除“a c c o u n t s . d o c”文件扩展名。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo "accounts.doc"|sed 's/.doc//g'
accounts
5. 增加文件扩展名
s e d附加字符串“. d o c”到字符串“a c c o u n t s”。
[Copy to clipboard] [ - ] CODE:
accounts
5. 增加文件扩展名
s e d附加字符串“. d o c”到字符串“a c c o u n t s”。
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo "accounts"|sed 's/$/.doc/g'
accounts.doc
6. 替换字符系列
如果变量x含有下列字符串:
[Copy to clipboard] [ - ] CODE:
accounts.doc
6. 替换字符系列
如果变量x含有下列字符串:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ x="Department+playroll&Building G"
[sam@chenwy sam]$ echo $x
Department+playroll&Building G
如果要加入of,located,并去掉+,&实现下列转换:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo $x
Department+playroll&Building G
如果要加入of,located,并去掉+,&实现下列转换:
[Copy to clipboard] [ - ] CODE:
[sam@chenwy sam]$ echo $x |sed 's/\+/ of /g' |sed 's/\&/ Located at /g'
Department of playroll Located at Building G
把+用 of 替换,&用located at 替换
Department of playroll Located at Building G
把+用 of 替换,&用located at 替换
相关阅读 更多 +