【问题标题】:How to use cut to print only a single line of command output?如何使用 cut 只打印一行命令输出?
【发布时间】:2019-05-06 14:02:12
【问题描述】:

我编写了一个用于测试目的的 shell 脚本,如下所示:

#!/bin/sh 
echo 'line 1\n line2\n line3'

我正在尝试使用 cut 命令只打印一行,如下所示:

echo $(./myScript.sh | cut -d$'\n' -f1)

在上面的例子中,我的意图是打印'line1'。将 -f1 替换为 -f2 会改为打印“line2”,或者我是这么认为的。

相反,我的输出如下所示:

line1 line2 line3

同样,如果我将分隔符从 $'\n' 更改为其他内容,如下所示:

echo $(./myScript.sh | cut -d'e' -f1)

输出变成:

lin lin lin

因此,它似乎是在 每一行 的任何分隔符之前打印第一个字段,而不是整个 myScript.sh 的整个输出。如何让 cut 命令适用于整个字符串而不是每一行?或者,还有什么其他命令可以更好地用于此目的?

谢谢!

【问题讨论】:

  • 我找到了另一种方法,如下所示:echo $(./myScript.sh | head -1) 用于第一行,echo $(./myScript.sh | head -2 | tail -1) 用于第二行。对于第三行,您可以使用echo $(./myScript.sh | head -3 | tail -1),依此类推。

标签: shell text command line cut


【解决方案1】:

我找到了一种方法,看起来像这样:

echo $(./myScript.sh | head -1)              # for the first line
echo $(./myScript.sh | head -2 | tail -1)    # for the second line
echo $(./myScript.sh | head -3 | tail -1)    # for the third line

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 2014-04-07
    • 2012-06-10
    • 2015-09-29
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多