我尝试使用以下命令在终端中显示一个命名管道:
tail -f textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
由于某种原因,它没有产生任何输出。
如果去掉-f选项,则可以按预期工作:
tail textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
或者去掉cut语句:
tail -f textFile | sed -e "s/a/g&g/"
或者去掉sed语句:
tail -f textFile | cut -d " " -f 3-
只有当这三个东西一起出现时,它突然不再产生任何输出。 sed和cut的顺序没有影响。所有这些都使我很难将输入或输出缓冲行为归咎于任何一个或一对这些程序。
一个可能的解决方案是使用while read line结构来获得所需的功能,但如果可能的话,我想避免为每行初始化一个命令。
tail -f textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
由于某种原因,它没有产生任何输出。
如果去掉-f选项,则可以按预期工作:
tail textFile | cut -d " " -f 3- | sed -e "s/a/g&g/"
或者去掉cut语句:
tail -f textFile | sed -e "s/a/g&g/"
或者去掉sed语句:
tail -f textFile | cut -d " " -f 3-
只有当这三个东西一起出现时,它突然不再产生任何输出。 sed和cut的顺序没有影响。所有这些都使我很难将输入或输出缓冲行为归咎于任何一个或一对这些程序。
一个可能的解决方案是使用while read line结构来获得所需的功能,但如果可能的话,我想避免为每行初始化一个命令。
textFile
的样本行,以便调查原因! - Inianaaaaaaaaaaaaaaaaaaaaa \n bbbbbbbbbbbbbbbb
- cyborgx7tail -f textFile | while read text; do echo "$text" | cut -d " " -f 3- | sed -e "s/a/g&g/; done
。因为我猜测这是tail
和cut
分别处理它们的输出和输入流的方式。如果有效,我会将其发布为答案。 - Inian