Bash 在macOS中添加了一条注释,这给了我一个错误

Bash 在macOS中添加了一条注释,这给了我一个错误,bash,sed,Bash,Sed,我找不到关于这个问题的任何资源 macOS和ubuntu都给出了如下相同的结果 >>>序号10 | sed' 3p 6d ' 1. 2. 3. 3. 4. 5. 7. 8. 9 10 但当我插入注释时,macOS中的sed给出了错误 >>>序号10 | sed' 3p打印第三行 6d打印第6行 ' sed:2: 3p打印第三行 6…:p命令末尾的额外字符 macOS不支持评论吗?还是我弄错了? 请让我知道,谢谢。任何时候您使用sed超过s/old/new/您使用了错误的工具,可能使用了不可移植的

我找不到关于这个问题的任何资源

macOS和ubuntu都给出了如下相同的结果

>>>序号10 | sed' 3p 6d ' 1. 2. 3. 3. 4. 5. 7. 8. 9 10 但当我插入注释时,macOS中的sed给出了错误

>>>序号10 | sed' 3p打印第三行 6d打印第6行 ' sed:2: 3p打印第三行 6…:p命令末尾的额外字符 macOS不支持评论吗?还是我弄错了?
请让我知道,谢谢。

任何时候您使用sed超过s/old/new/您使用了错误的工具,可能使用了不可移植的构造。只需使用awk即可实现可移植性、清晰性、效率和健壮性等。在每个UNIX机箱上的任何shell中使用任何awk都可以:

$ 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

最初的问题标题是sed注释在macOS中不起作用。但是StackOverflow一再拒绝了它:根据-如果您担心可移植性,请注意,一些不符合POSIX的sed实现可能只支持一条单行注释,并且仅当脚本的第一个字符是a时才支持。@Sundeep我想选择您的答案,但我不能,因为这是一条注释。我怎样才能解决这个问题?我应该删除这个问题吗?@0xF4D3C0D3等一段时间,我不知道macOS,可能还有其他原因。。我认为你不应该删除这个问题。。另外,如果您在自己的行上有评论,请检查会发生什么情况,对于ex print第3行,然后是下一行3p和下一行print第6行和下一行6detc@Sundeep我认为你是对的,因为当评论有自己的行时,它工作得非常完美。你给了我一个关于文本操作的新观点。我也要试试awk。现在,我想先了解sed。顺便说一句,泰姆:不客气。我使用sed已经有40年了,awk已经有30年了,除了s/old/new之外,没有sed,只是有不同的版本,具有不同的神秘、神秘、不可移植的语法。我知道我想试着去理解一些东西,但我认为在这种情况下,花在学习awk上是浪费时间。如果你想学习awk,我强烈推荐Arnold Robbins的《有效的awk编程》,第四版,不要买任何关于sed或sed&awk的书,因为你不需要一本书来学习你应该使用sed的东西。你是这么说的吗?这本书是阿诺德·寿写的,我不知道我能免费得到这本书有多好。这就是它的来源,这是阿诺德为了方便我们免费提供给我们参考的那本书的PDF,但是人们买这本书是他写这本书赚钱的唯一途径,在线提供该文档,并实际提供/维护工具GNU awk,因此我始终鼓励所有人购买该书。该书涵盖了所有awk,另外还向您介绍了GNU特定的功能,因此它拥有一切。