';d';sed实用程序中的命令
从sed文档中:';d';sed实用程序中的命令,sed,Sed,从sed文档中: d Delete the pattern space; immediately start next cycle. 下一个周期的是什么意思?我的理解是sed不会在d命令之后应用以下命令,它开始从输入流读取下一行并对其进行处理。但这似乎不是真的。请参见此示例: [root@localhost ~]# cat -A test.txt aaaaaaaaaaaaaa$ $ bbbbbbbbbbbbb$ $ $ ccccccccc$ ddd$ $ eeeeeee$ [root
d Delete the pattern space; immediately start next cycle.
下一个周期的是什么意思?我的理解是sed不会在d命令之后应用以下命令,它开始从输入流读取下一行并对其进行处理。但这似乎不是真的。请参见此示例:
[root@localhost ~]# cat -A test.txt
aaaaaaaaaaaaaa$
$
bbbbbbbbbbbbb$
$
$
ccccccccc$
ddd$
$
eeeeeee$
[root@localhost ~]# cat test.txt | sed '/^$/d;p;p'
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
bbbbbbbbbbbbb
bbbbbbbbbbbbb
bbbbbbbbbbbbb
ccccccccc
ccccccccc
ccccccccc
ddd
ddd
ddd
eeeeeee
eeeeeee
eeeeeee
[root@localhost ~]#
如果立即开始下一个循环,则p命令将不会有任何输出
有人能帮我解释一下吗?谢谢。这意味着sed将读取下一行并开始处理它 您的测试脚本并没有按照您的想法执行。它匹配空行并对其应用delete命令。它们不会出现,因此打印语句不会应用于空行。这两个打印命令没有连接到delete命令的模式,因此非空行打印三次。如果你改为尝试
sed '/./d;p;p' test.txt # matches all non-empty lines
<> P>除了空白行以外,没有打印任何内容,三次。< P> A),可以将多个命令组合为一个模式与花键:
sed '/^$/{d;p;p}' test.txt
aaaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccc
ddd
eeeeeee
命令d仅应用于此处的空行:'/^$/d;Pp’。否则,该行将额外打印2次。要将“p”-命令绑定到模式,必须构建花括号。然后也会跳过p命令,但这是因为它会跳到下一个周期,而不是因为它不匹配
b) 猫的无用用途。(已显示)