加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 处理来自管道的输入的函数

发布时间:2020-12-15 22:08:40 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个bash函数来返回一个特定的管道输出行. 目前,完整命令如下所示: mdfind 'my_search_string' | sed "2q;d" 这将返回mdfind-command的第二行输出. 我试图将sed“$1q; d”变成一个被指定为别名的函数. 如何处理管道输入? 解决方法 要返回第
我正在尝试编写一个bash函数来返回一个特定的管道输出行.
目前,完整命令如下所示:

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

这将返回mdfind-command的第二行输出.

我试图将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}'

UPDATE

正如Charles Duffy所建议的那样,您也可以将此格式用于POSIX兼容性.实际上它也与基于原始System V sh的所有外壳兼容.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读