Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';d';sed实用程序中的命令_Sed - Fatal编程技术网

';d';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

从sed文档中:

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) 猫的无用用途。(已显示)