bash - 从文件中的行返回数据的最简单方法

标签 bash

我有一个格式如下的文件 tmp.info:

foo..............bar
alligator........bear
cat..............dog

我想在 bash 中创建一个小的包装命令,当第一个字符串提供给函数时返回行中的第二个字符串。例如,像这样的东西:

#!/bin/bash

get_from_info_file() {
cat $1 | grep $2 | grep ????????
}

echo `get_from_info_file tmp.info alligator`

应该返回:

>>> bear

最优雅的方法是什么?

最佳答案

你可以像这样使用 awk:

get_info_from_file() {
    awk -F'\\.+' -v search="$2" '$1 == search { print $2 }' "$1"
}

这会将字段分隔符设置为一个或多个 . 并使用传递给函数的第二个参数设置变量 search。如果第一个字段 $1 等于搜索字符串,则打印第二个字段。

使用问题中的文件进行测试:

$ get_info_from_file tmp.info alligator
bear

关于bash - 从文件中的行返回数据的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752222/

相关文章:

bash - 在 Bash Linux 中,如果给定进程运行时间超过指定时间,如何获取通知?

java - Bash 忽略 Java 应用程序的退出

linux - echo 不会输出多行

node.js - 通过Node.js子进程区分bash和sh

bash - 意外标记 `}' 附近的语法错误`

linux - 特权命令是如何控制的?

linux - Ubuntu bash 在编辑 .bashrc 文件后显示错误 "syntax error near unexpected token ` 换行符'"

php - 为什么从 CRON 运行 php 脚本会导致字符编码问题?

linux - 使用awk分析csv文件

python - 从 makefile 激活 Anaconda Python 环境