-2
sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'
有人可以向我解释这个sed命令吗?
在背景:
echo "aaaa\nsometext\nzzzz\n" | sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'
打印 “sometext”,这是正确的预期,但我不明白的语法,尽管在一个sed的cheatsheet凝视了一会儿。
提前致谢!
sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'
有人可以向我解释这个sed命令吗?
在背景:
echo "aaaa\nsometext\nzzzz\n" | sed -n '/aaaa/{:a;n;/zzzz/b;p;ba}'
打印 “sometext”,这是正确的预期,但我不明白的语法,尽管在一个sed的cheatsheet凝视了一会儿。
提前致谢!
sed将当前行读入其模式空间。通常,sed会在处理完当前行后打印模式空间。这可以通过选项-n
禁用。因此,sed只能使用命令p
输出它的模式空间。
仅当sed找到包含某处表达式的行aaaa
时,它会在curley括号内执行命令。
:a
是一个名称为a
的标签,不起作用。使用命令n
sed将下一行输入读入其模式空间。 aaaa
在模式空间中被覆盖。如果模式空间现在包含表达式zzzz
执行命令b
并分支到脚本结束并结束执行。如果模式空间不包含表达式zzzz
执行p
(打印模式空间)并执行命令ba
(跳转到标签a
)。并用命令n
重新开始...
欢迎来到StackOverflow。不幸的是,这既不是免费的咨询/设计/编码或调试服务,教程网站也不是网络搜索替代品。我们可以帮助解决[某些问题](https://stackoverflow.com/help/on-topic),但它是**你的**工作** [付出一些努力](http://meta.stackoverflow.com/questions/261592)**,包括初级** [(重新搜寻)](https://google.com/)* –
嗯。在我的mingw控制台中不适用于我。 –
应该从字面上搜索如何使用'sed'命令以及如何在您的示例中解释替换字符串的数千个示例。 –