如何将 cat 的输出通过管道传输到 cut

如何将 cat 的输出通过管道传输到 cut

我想cat /proc/uptime进入cut -f1Bash 脚本。

我试过了;

cat /proc/uptime | cut -f1
cat /proc/uptime > cut -f1
cut -f1 < cat /proc/uptime

我需要使用 echo 或其他东西来实现这一点吗?

答案1

默认字段分隔符cut是制表符。由于您的文件有空格,因此您需要指定分隔符:

-d ' '

而且你真的根本不需要使用cat管道。直接读取文件就可以了。

cut -f 1 -d ' ' /proc/uptime

答案2

cat /proc/uptime | cut -f1 -d' '

正确的

< /proc/uptime  cut -f1 -d' '

正确的而且效率更高,因为它直接读取/proc/uptime而无需创建管道(这在这里并不重要)。

通常建议在论坛上使用第二种形式,否则你会在你大喊“猫没用”之后得到纯粹主义者的欢迎。


cut -f1 -d' ' < cat /proc/uptime

错误的。它是一样的

cut -f1 -d' ' /proc/uptime < cat

如果您使用的是 bash,您还可以使用<()

cut -f1 -d' ' < <(cat /proc/uptime)

这将创建一个用于读取的匿名命名管道,并且 的输出cat /proc/uptime将通过管道传输到其中。但话又说回来——猫的使用毫无用处。

除此之外,cut还可以采用文件参数,因此所有重定向版本也可以在没有以下情况的情况下工作<(从效率角度来看应该不重要):

cut -f1 -d' '/proc/uptime

或者使用 <() 管道:

cut -f1 -d' ' <(cat /proc/uptime)

答案3

默认情况下,剪切的分隔符是 TAB,您可以将其更改为空格

cat /proc/uptime | cut -f1 -d " " 

尽管在这些情况下我更喜欢使用 awk:

cat /proc/uptime | awk '{print$1}' 

相关内容