【发布时间】: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