小编Pav*_*nes的帖子

使用uniq过滤管道中的相邻行

我正在尝试使用以下命令监视主题更改:

dbus-monitor --session "interface='org.freedesktop.portal.Settings', member=SettingChanged" | grep -o "uint32 ."
Run Code Online (Sandbox Code Playgroud)

现在的输出看起来像这样:

uint32 0
uint32 0
uint32 1
uint32 1
uint32 0
uint32 0
uint32 1
uint32 1
Run Code Online (Sandbox Code Playgroud)

此输出来自主题切换。由于某种原因,主题通知显示两次。现在我想将其通过管道传输到uniq,因此我只保留一个条目,如下所示:

uint32 0
uint32 1
uint32 0
uint32 1
Run Code Online (Sandbox Code Playgroud)

然而,uniq在最后追加不会再产生任何输出。

uint32 0
uint32 0
uint32 1
uint32 1
uint32 0
uint32 0
uint32 1
uint32 1
Run Code Online (Sandbox Code Playgroud)

man uniq

从 INPUT(或标准输入)中过滤相邻的匹配行,写入 OUTPUT(或标准输出)。

uniq需要缓冲至少最后一个输出行才能检测相邻行,我看不出有任何原因它不能缓冲它并沿着管道传递它。我已经尝试按照此处的建议调整行缓冲,但结果对我来说仍然相同。

uint32 0
uint32 1
uint32 0
uint32 1
Run Code Online (Sandbox Code Playgroud)

grep uniq

11
推荐指数
1
解决办法
956
查看次数

标签 统计

grep ×1

uniq ×1