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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |