如何从命令行获取第一行输出?

如何从命令行获取第一行输出?

我正在运行 find 命令,它返回了多个结果,但我只需要第一个结果。在谷歌上搜索后,我找到了“read”命令,但我没能搞明白,手册页也没有太大帮助。

答案1

输入您的命令(例如:)ls -l,然后输入head带有管道的命令,如下所示:

ls -l | head -1

注意:有关于“head”用法的文档

http://schillix.sourceforge.net/man/man1/head.1.html

 -n number    The first number lines of each  input  file  is
              copied  to  standard output. The number option-
              argument must be a positive decimal integer.

 -number      The  number  argument  is  a  positive  decimal
              integer  with  the same effect as the -n number
              option.

如这里所示,并且正如评论中所提到的,这也取决于您的基于 unix 的发行版:

 ls -l | head -n 1

答案2

我喜欢用很多方法来解决 unix 问题。下面是其他一些方法,假设它们command被替换成您实际正在做的事情:

command | awk 'NR == 1 {print}'

command | sed -e 1q

TMP=`mktemp tempXXX`; command > ${TMP} ; ed ${TMP} << HERE
1p
HERE

command | split -1 - ; cat xaa ; rm -f x[a-z][a-z]

LINECOUNT=$(command | tee tempfile | wc -l | sed -e 's/ *//g'); \
  tail -$((${LINECOUNT} - 1)) tempfile | diff -u - tempfile | grep '^+' | \
  grep -v '^+++' | sed -e 's/^+//'

如果您的输出是固定长度的记录(这可能是真的;例如输入 80 个字符加上一个终端换行符):

command | dd ibs=81 count=1

有一次,我尝试从容量受限的存储设备(软盘)安装 Unix 系统。我们经常不得不想出富有想象力的方法来使用 1.44MB 软盘上有限的命令集 :)

答案3

您可以使用 more 命令来控制一次显示的文本量。

要解决您的问题:

将输出重定向到您创建的文件。

使用 1 个周期的 For 循环(计数器 = 1,每次 -1)。您需要使用标记来实现搜索功能。

For 循环将 ECHO 第一个命令。

删除您的文件。

将 FOR 循环的回声存储在变量中(可选)。

如果您需要,我可以提供一些使用定义。

答案4

如何使用read

$ echo -e "1\n2\n3\n4\n5"
1
2
3
4
5

$ echo -e "1\n2\n3\n4\n5" | 读取 n 时;执行 echo "n:$n" ;完成
n:1
人数:2
人数:3
人数:4
数量:5

$


有关 bash 如何工作的更多信息,请访问www.tldp.orgAdvanced Bash-Scripting Guide
还有一个关于 bash 的指南Bash Guide for Beginners

相关内容