繁体   English   中英

sed 在 macOS 中带有评论,它给了我一个错误

[英]sed with a comment in macOS, it gives me an error

我找不到有关此问题的任何资源。

macOS 和 ubuntu 都给了我相同的结果,如下所示。

>>> seq 10 | sed '
3p
6d
'
1
2
3
3
4
5
7
8
9
10

但是当我插入评论时,macOS 中的 sed 给了我错误。

>>> seq 10 | sed '
3p  # print 3rd line
6d  # print 6th line
'
sed: 2: "
3p  # print 3rd line
6 ...": extra characters at the end of p command

macOS 不支持评论吗? 还是我做错了什么? 请告诉我,谢谢。

每当您使用 sed 超过 s/old/new/ 时,您都在使用错误的工具,并且可能使用了不可移植的结构。 Just use awk for portability, clarity, efficiency, robustness, etc. This will work using any awk in any shell on every UNIX box:

$ seq 10 | awk '
NR == 3 { print }
NR == 6 { print }
{ print }
'
1
2
3
3
4
5
6
6
7
8
9
10

无需注释,因为代码清晰 如果你喜欢当然可以添加评论:

$ seq 10 | awk '
NR == 3 { print }       # print 3rd line
NR == 6 { print }       # print 6th line
{ print }               # print all lines
'
1
2
3
3
4
5
6
6
7
8
9
10

或者如果您想删除而不是打印第 6 行:

$ seq 10 | awk '
NR == 3 { print }       # print 3rd line
NR == 6 { next }        # delete 6th line
{ print }               # print all lines
'
1
2
3
3
4
5
7
8
9
10

如果您喜欢简洁,您可以通过依赖默认行为使代码不太清晰:

# seq 10 | awk '
NR == 3                 # print 3rd line
NR == 6                 # print 6th line
1                       # print all lines
'
1
2
3
3
4
5
6
6
7
8
9
10

$ seq 10 | awk '
NR == 3       # print 3rd line
NR != 6       # print all lines except the 6th
'
1
2
3
3
4
5
7
8
9
10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM