如果我运行如下命令:
watch "ps -ef | grep '^foo.*bar'"
并且匹配的输出行ps -ef
是一条长行,例如
foo <lots and lots of text here> bar
此行是否输出受终端大小影响。例如,如果终端是全屏的,并且此行适合屏幕,则输出将显示在 watch 中。但是,如果我将窗口大小调整为屏幕大小的一半,以便栏从屏幕上截断,那么 grep 行将完全消失(可能是该行在到达管道中的 grep 之前被截断)。这是一个问题,因为我试图提取此行的一部分以供稍后在管道中使用。
有什么解决方案可以防止终端大小影响 watch 命令中 grep 的输出?
答案1
它不是grep, 它是附言. 添加-ww
选项(ps -efww
)来告诉它始终输出整行。
答案2
我不知道正确的解决方案是,但这似乎解决了问题,
watch "COLUMNS=160 ps -ef | grep '^foo.*bar'"
代价是折叠 ps 中的行。将“160”更改为足够长的长度,以便显示您期望看到的最长的“foo.*bar”行。