" 抽取域。
" 匹配正则表达式。
" 比较域。
" 增加、附加、替换。
" 基本的s e d命令和一行脚本。
s e d选项如下:
n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。
c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条s e d命令,此选项无用,但指定它也没有关系。
f 如果正在调用s e d脚本文件,使用此选项。此选项通知s e d一个脚本文件支持所有的s e d命令,例如:sed -f myscript.sed input_file,这里m y s c r i p t . s e d即为支持s e d命令的文件。
1) 使用行号,可以是一个简单数字,或是一个行号范围。
2 ) 使用正则表达式
原帖由 "寂寞烈火" 发表:
终于等到sed啦,好好学学
P.S:新版本的sed(GNU sed version 4.0.5)带有-i选项,允许直接编辑修改文件内容而不需要重定向到临时文件
例如:
/home/lee#cat file
old
abc
/home/lee#sed -i 's/old/new/' file
/..........
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出结果。
w 文件名使用此选项将输出定向到一个文件。
原帖由 "零二年的夏天" 发表:
佩服,佩服!
以后要向你多请教。
原帖由 "寂寞烈火"ctrl+v+M试一试
各系统控制字符键值可能不同,主要取决于其映射方式(例如使用t e r m i n f o或t e r m c a p)。
如果要在文本文件中插入控制字符F 1键,使用v i查看其键值,操作如下:
• 启动v i。
• 进入插入模式。
• 按下< C t r l >键,然后按< v >键(出现a ^)。
• 释放上述两个键。
• 按下F 1键(显示[ O P ]。
• 按下< E S C >键(显示F 1键值)。
要产生控制字符( ^ M),需遵从前面产生F 1键同样的处理过程。步骤如下;键入sed s/,然后按住< C t r l >键和v键,释放v键,再按住^键,并保持< C t r l >键不动,再释放两个键,最后按< r e t u r n >键。
原帖由 "wingger"
‘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键
字符 描述
与行首匹配
与行末尾匹配
与任一个字符匹配
将与前一个字符的零或多个出现匹配
[ ] 与 [ ] 之内的所有字符匹配
规则
表达式 描述
/./ 将与包含至少一个字符的任何行匹配
/../ 将与包含至少两个字符的任何行匹配
/^#/ 将与以 '#' 开始的任何行匹配
/^$/ 将与所有空行匹配
/}^/ 将与以 '}'(无空格)结束的任何行匹配
/} *^/ 将与以 '}' 后面跟有零或多个空格结束的任何行匹配
/[abc]/ 将与包含小写 'a'、'b' 或 'c' 的任何行匹配
/^[abc]/ 将与以 'a'、'b' 或 'c'开始的任何行匹配
'[a-x]*'
这将匹配零或多个全部为 'a'、'b'、'c'...'v'、'w'、'x' 的字符。另外,可以使用 '[]' 字符类来匹配空格。以下是可用字符类的相当完整的列表:
字符类 描述
[] 字母数字 [a-z A-Z 0-9]
[] 字母 [a-z A-Z]
[] 空格或制表键
[] 任何控制字符
[] 数字 [0-9]
[] 任何可视字符(无空格)
[] 小写 [a-z]
[] 非控制字符
[] 标点字符
[] 空格
[] 大写 [A-Z]
[] 十六进制数字 [0-9 a-f A-F]
原帖由 "tianci3982730" 发表:
肯定可以的无论在shell或在vi内都可
先按ctrl+v然后按ctrl+m
当你按ctrl+v后无任何显示
然后按ctrl+m就出现了^M了
按ctrl+v意思是接着输入控制字符的意思
原帖由 "rubemars" 发表:
不是“/”,应该是“\”,echo 'a\b'。
请问你这个方法是用#代替了/吗?有没有详细一点的说明。
原帖由 "99168161" 发表:
请问大侠:
有没有把1行和2行合成一行,3行和4行合成一行......的命令或办法?
请高手告知
请发站内邮件最好,多谢!
原帖由 "寂寞烈火" 发表:
终于等到sed啦,好好学学
P.S:新版本的sed(GNU sed version 4.0.5)带有-i选项,允许直接编辑修改文件内容而不需要重定向到临时文件
例如:
/home/lee#cat file
old
abc
/home/lee#sed -i 's/old/new/' file
/..........
原帖由 "a_beginner" 发表:
sed "/END/a\aa" server.key
执行这个之后,显示如下错误
sed: -e expression #1, char 8: Extra characters after command
请问是什么意思?命令跟帖子上的一样啊
原帖由 "99168161" 发表:
请问大侠:
有没有把1行和2行合成一行,3行和4行合成一行......的命令或办法?
请高手告知
请发站内邮件最好,多谢!
原帖由 mtsxbjing 于 2005-11-6 17:46 发表
我强烈建议版主把这么好的东西整理成文档,为人民服务嘛!!
人民会记住你的!!
原帖由 jackson_lijian 于 2005-12-16 15:56 发表
请问有没有p;g;$!N;p;D; 这些的解释。
发现这一块很难看懂啊。。。
原帖由 wingger 于 2004-11-28 22:26 发表
替换!
$ sed -e 's/\(.*\) \(.*\) \(.*\)/Victor \1-\2 Von \3/' myfile.txt
[code]
原帖由 leady 于 2005-12-13 17:11 发表
感觉好多是《LINUX与UNIX SHELL编程指南》中的东东,不过还得感谢楼主辛勤整理
原帖由 softcar 于 2006-8-22 18:27 发表
我想把 /dev/rdsk/c3t6d6
中的 /rdsk/ 替换为 /dsk/
但是使用
tr "[/rdsk/]" "/dsk/" <rvtemp.txt替换出来的都不对。
请高手指点一下。
原帖由 寂寞烈火 于 2004-11-28 21:28 发表
ctrl+v+M试一试
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |