gpt4 book ai didi

bash - 处理管道输入的函数

转载 作者:行者123 更新时间:2023-11-29 09:09:09 24 4
gpt4 key购买 nike

我正在尝试编写一个 bash 函数以按其编号返回特定的管道输出行。目前完整的命令如下所示:

mdfind 'my_search_string' | sed "2q;d"

这将返回 mdfind 命令的第二行输出。

我正在尝试将 sed "$1q;d" 变成一个被指定为别名的函数。

如何处理管道输入?

最佳答案

要返回第二行输出,请执行以下操作:

... | sed -ne 2p

并将其用作函数:

function print_2nd_line {
sed -ne 2p
}

mdfind 'my_search_string' | print_2nd_line

您也可以选择较短的名称,例如 p2

该函数还可以定制为能够从指定文件中打印第二行,例如:

function print_2nd_line {
sed -ne 2p -- "$@"
}

print_2nd_line file
... | print_2nd_line ## Still could be used like this.

顺便说一下,更高效的版本是

sed -ne '2{p;q}'

更新

正如 Charles Duffy 所建议的,您也可以使用这种格式来实现 POSIX 兼容性。实际上,它还与基于原始 System V sh 的所有 shell 兼容。

print_2nd_line() {        
sed -ne '2{p;q}' -- "$@"
}

此外,如果您想将自定义行号传递给您的函数,您可以:

print_2nd_line() {
N=$1; shift
sed -ne "${N}{p;q}" -- "$@"
}

你可以在哪里运行它:

... | print_2nd_line 2  ## Still could be used like this.

或者

print_2nd_line 2 file

关于bash - 处理管道输入的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com