![如何将 cat 的输出通过管道传输到 cut](https://linux22.com/image/67291/%E5%A6%82%E4%BD%95%E5%B0%86%20cat%20%E7%9A%84%E8%BE%93%E5%87%BA%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93%E5%88%B0%20cut.png)
我想cat /proc/uptime
进入cut -f1
Bash 脚本。
我试过了;
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}'