首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用管道的多次sed vs sed ( "sed -e cmd1 -e cmd2“与"sed -e cmd1 _ sed -e cmd2”相同吗?)

使用管道的多次sed vs sed ( "sed -e cmd1 -e cmd2“与"sed -e cmd1 _ sed -e cmd2”相同吗?)
EN

Stack Overflow用户
提问于 2017-06-09 06:37:59
回答 1查看 26关注 0票数 1

这两者有什么区别呢?

  • sed -e 'script1' -e 'script2' file
  • sed 'script1' file | sed 'script2'

我原以为他们是一样的,但看起来他们不是。

下面是一个例子,说明它们是如何不同的:

代码语言:javascript
复制
$ cat test
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    11786 nick  138u  IPv6 858395      0t0  TCP localhost:46091->localhost:9092 (CLOSE_WAIT)
java    11786 nick  142u  IPv6 860196      0t0  TCP localhost:46093->localhost:9092 (CLOSE_WAIT)

$  sed 'G;G' test | sed '/^$/d'
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    11786 nick  138u  IPv6 858395      0t0  TCP localhost:46091->localhost:9092 (CLOSE_WAIT)
java    11786 nick  142u  IPv6 860196      0t0  TCP localhost:46093->localhost:9092 (CLOSE_WAIT)

$  sed -e 'G;G;' -e '/^$/d;G' test
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME



java    11786 nick  138u  IPv6 858395      0t0  TCP localhost:46091->localhost:9092 (CLOSE_WAIT)



java    11786 nick  142u  IPv6 860196      0t0  TCP localhost:46093->localhost:9092 (CLOSE_WAIT)

差别是间距。就像我说的,我会认为他们是一样的,是什么原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-09 08:16:50

sed -e script1 -e script2sed [-e] script1 | sed [-e] script2不一样。见示例:

代码语言:javascript
复制
[STEP 101] # printf '%s\n' 1 2 3 4
1
2
3
4
[STEP 102] # printf '%s\n' 1 2 3 4 | sed -e n -e d # delete line 2, 4, 6, ...
1
3
[STEP 103] # printf '%s\n' 1 2 3 4 | sed n | sed d
[STEP 104] #

步骤103不打印任何内容,因为上一次sed d将删除所有内容。

sed -e script1 -e script2通常与sed -e "script1<NEWLINE>script2"相同。也许你跟这事搞混了?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44450921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档