这三个sed命令到底有什么不同
第一个直接报错;第二个没有输出r b的内容;第三个是想要的结果。
诡异的是用sedsed -d看第二个和第三个输出内容完全是一样的
复制代码
诡异的是用sedsed -d看第二个和第三个输出内容完全是一样的
- # cat a
- 123
- 124
- dcd
- 125
-
- # cat b
- __aa
- __bb
- __cc
-
- # sed '/dcd/{r b;N}' a
- sed: -e expression #1, char 0: unmatched `{'
-
- # sed '/dcd/{r b;
- N}' a
- 123
- 124
- dcd
- 125
-
- # sed '/dcd/{r b
- ;N}' a
- 123
- 124
- __aa
- __bb
- __cc
- dcd
- 125
作者: Estwind 发布时间: 2011-06-10
回复 Estwind
你可以先创建一个名为"bb;"的文件,执行下面的,可以帮助你理解
复制代码
总结一下,sed中的r命令会把其后面的任何字符判读为文件名,直到回车符或是单引号,一般对r命令的写法有下面的几种:
复制代码
你可以先创建一个名为"bb;"的文件,执行下面的,可以帮助你理解
- cat bb;
- __aa
- __bb
- __cc
-
- sed '/dcd/r bb;' aa
- 123
- 124
- dcd
- __aa
- __bb
- __cc
- 125
-
- sed '/dcd/r bb' aa
- 123
- 124
- __aa
- __bb
- __cc
- dcd
- 125
-
- sed '/dcd/{r bb;}' aa
- sed: -e expression #1, char 0: unmatched `{' #显然这个是对"{}"的错误用法,应该是下面的
-
- sed '/dcd/{r bb;
- }' aa
- 123
- 124
- dcd
- __aa
- __bb
- __cc
- 125
- sed '/pattern/{r file1
- other cmd
- }' file # 因为这里里面使用了{},所以可以添加其它命令
-
-
- sed '/pattern/ r file1 ' file
-
- sed -e '/pattern/{r file1' -e 'other cmd}' file # 这里使用-e,相当于第一种用法
作者: yinyuemi 发布时间: 2011-06-11
回复 yinyuemi
学习了
学习了
作者: zzy7186 发布时间: 2011-06-11